python远程控制终端数据_python-paramiko让你远程在服务器上执行命令

本篇文章简述SSHclient对象的常用方法,并提供一个简单用例

connect()

连接到ssh服务器上去并且进行认证,并且会根据主机的秘钥检查服务器的主机秘钥,如果服务器主机的hostname没有在system host keys和local host keys中找到,将会使用缺少主机秘钥的策略,默认的策略是拒绝秘钥并且引发SSHException.

这里如果大家没有用本地的终端通过ssh访问过远程服务器的话,在.ssh文件里的host_key文件是不会保存服务器的秘钥的。就会引发SSHException。

下面介绍几个常用的参数

参数

解释

hostname(str)

需要连接的主机

port(int)

端口号,默认22

username(str)

需要登录的用户名

password(str)

密码

passphrase(str)

解码私钥

pkey(PKey)

可选用于认证的私钥

key_filename(str)

尝试进行身份验证的可选私钥和或证书的文件名或文件名列表

timeout(float): TCP连接的可选超时(以秒为单位)

allow_agent(bool) | 默认为True,设置为False以禁用连接到SSH代理

look_for_keys(bool): 默认为True,设置为False可禁用在〜/.ssh /中搜索可发现的私钥文件

该方法将会抛出的异常:

BadHostKeyException: 如果无法验证服务器的主机秘钥

AuthenticationException: 如果用户认证失败

SSHException: 在SSH会话建立的过程中出现错误

exec_command()

在SSH服务器上执行命令。一个新的Channel将会打开,并执行所请求的命令。命令的输入和输出流作为代表stdin,stdout,stderr。

参数

解释

command(str)

执行的命令

bufsize(int)

解释方式与Python中的内置file()函数相同

timeout(int)

设置命令的channel超时

get_pty(bool)

向服务器请求伪终端(默认为false)

return

返回命令执行后的stdin,stdout,stderr(3-tuple)

raise

抛出SSHException,如果服务端没有正常执行命令

close()

关闭SSHClient和底层的Transport

get_host_keys()

获取到HostKeys对象,可用于检查或更改本地主机密钥。

get_transport()

返回基础Transport对象,可用于执行更底层的任务,例如打开特定种类的channels

load_host_keys(filename)

加载本地的主机密钥文件,可以多次调用此方法。 每个新的主机密钥集将与现有的密钥集合并(如果存在冲突,则用新的旧密钥合并)。 自动保存时,将使用最后一个主机名。

load_system_host_keys(filename=None)

加载系统的主机密钥文件。如果filename保留为None,将尝试从用户的本地“已知主机”文件中读取密钥(由OpenSSH使用),并且如果无法读取该文件,则不会引发异常。这可能仅在posix上有用。

最后发一个简单的用例

from paramiko import SSHClient

client = SSHClient()

client.load_system_host_keys()

client.connect(hostname = "your ip", username= "your username", password = "your password")

stdin,stdout,stderr = client.exec_command("pwd")

print(stdout.read().decode("utf-8"))

client.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值