python进行SSH远程?

*支付宝与微信两种方式二选一

*请依据自身情况量力选择捐赠类型并点击“确认”按钮

*依据中国相关法规,捐赠金额平台将不予提供发票

*您的捐赠将用于日常维护开销,感谢您无私捐赠支持

*本着平台非营利,请自主选择捐赠或分享资源获得积分

*捐赠或分享获得积分,一经使用不予退回积分或套餐

*推荐用chrome浏览器访问本站,禁用360/Edge浏览器

*请务必认真阅读上诉声明,捐赠视为理解同意上诉声明

我们使用 Python 避免不了和 Linux 打交道,而有时我们需要执行一些 shell 命令。如果在本地的话,那么可以通过调用 )修改或删除,多谢。

我们使用 python 避免不了和 linux 打交道,而有时我们需要执行一些 shell 命令。如果在本地的话,那么可以通过调用 os.system 或者 subprocess.popen 来执行,但如果我们希望远程执行其它机器上的 shell 命令,这个时候该怎么做呢?下面我们就来推荐一个第三方库 paramiko,看看如何使用 python 远程操作其它机器。

网络传输是遵循协议的,比如 ssh,paramiko 则是实现了 sshv2 协议的一个 python 第三方库(底层使用的是 cryptography)。有了 paramiko 之后,我们便可以通过 python 使用 ssh 协议来连接远程服务器执行操作,和 xshell 本质上是类似的。

注意:我们在 python 代码中是直接通过 ssh 协议对远程服务器执行操作,而不是调用 ssh 命令对远程服务器进行操作。

sshclient 的作用类似于 linux 下的 ssh 命令,是对 ssh 会话的封装,通常用于执行远程命令。

sftpclient 的作用类似于 linux 下的 sftp 命令,是对 sftp 客户端的封装,用于实现远程文件的操作。比如:文件上传,下载、修改文件权限等操作。

下面我们就来介绍它们的用法。

connect:实现远程服务器的连接与认证

 

里面参数很多,但常用的参数如下:

  • hostname:连接的目的主机, 这个参数是必须的
  • pkey=none:通过私钥进行身份验证
  • warningpolicy:用于记录一个未知的主机秘钥的 python 警告、并且接收; 所以它的功能和 autoaddpolicy 是类似的, 只不过会提示这是新连接

所以我们一般都会将策略改成 autoaddpolicy,不然还需要在本地进行配置。

open_sftp:在当前 ssh 会话的基础上创建一个 sftp 会话,该方法会返回一个 sftpclient 对象,可以执行文件的上传、下载等操作。我们后面在 sftpclient 的时候会说。

# 自动添加策略, 保存服务器的主机名和密钥信息; 如果不添加, 那么不再本地 know_hosts 文件中的主机将无法连接
# 连接 ssh 服务端, 通过用户名和密码进行认证
# 打印执行结果, 显然我们要通过 stdout 来查看, 我们可以调用 stdout.read 获取执行的结果
# 但是返回的是字节, 所以需要先获取对应的编码, 然后再进行 decode
 

还是很简单的,如果我们输入了一条错误的命令,那么 stdout 里面就不会有内容了,因为错误信息会保存是在 stderr 中。

 

sftpclient 作为一个 sftp 的客户端对象,根据 ssh 传输协议的 sftp 会话,可以实现远程文件的操作,例如:上传、下载、查看权限和状态等等。

# 参数传递一个由 ip 和 port 组成的元组即可
 

以上我们便得到的 sftp,那么它都支持哪些操作呢?

  • getcwd(self):查看工作区, 也就是当前所在路径

常用的大概以上这些,我们来演示一下。

# 3. 列出当前目录下的文件
# 4. 查看文件或目录状态
 
# 这种方式创建也是可以的
 

以上就是python基于paramiko库远程执行 ssh 命令,实现 sftp 下载文件的详细内容,更多关于python paramiko库的资料请关注萬仟网其它相关文章!

我要回帖

更多关于 python编程是啥 的文章

 

随机推荐