python-paramiko实现scp上传下载

1. python-paramiko实现scp上传下载

  • Python3的paramiko同时也支持类scp的功能

    • paramiko的SFTPClient可实现文件的上传、下载
    • 编写部署系统的时候可以用来传包传脚本等
  • 案例:paramiko基于密钥实现文件上传

    • 编写paramiko基于密钥实现文件上传

      #!/usr/bin/env python
      # _*_ coding: utf-8 _*_
      # Author:shichao
      # File: .py
      
      
      import paramiko
      import os
      
      # 远程连接 ip和端口
      transport = paramiko.Transport( '192.168.0.200', 22 )
      
      # 连接私钥
      pkey = paramiko.RSAKey.from_private_key_file( '/Users/admin/.ssh/id_rsa' )
      
      # 连接用户和密码
      transport.connect( username = 'root', pkey = pkey )
      
      # 文件工具
      sftp = paramiko.SFTPClient.from_transport(transport)
      
      # 上传文件,第一个位置是要上传的目录地址, 第二位置是要传输到服务器地址
      sftp.put('/tmp/hello.sh', '/tmp/hello.sh')
      
      
      sftp.close()
      transport.close()
      
      
      #  验证这个文件是否存在了
      result = os.system("sh /tmp/hello.sh")
      
      print(result)
      
      
    • 执行结果

      hello world
      0
      
  • 案例:paramiko基于密钥实现文件下载

    • 编写paramiko基于密钥实现文件下载

      #!/usr/bin/env python
      # _*_ coding: utf-8 _*_
      # Author:shichao
      # File: .py
      
      
      import paramiko
      import os
      
      # 远程连接 ip和端口
      transport = paramiko.Transport( '192.168.0.200', 22 )
      
      # 连接私钥
      pkey = paramiko.RSAKey.from_private_key_file( '/Users/admin/.ssh/id_rsa' )
      
      # 连接用户和密码
      transport.connect( username = 'root', pkey = pkey )
      
      # 文件工具
      sftp = paramiko.SFTPClient.from_transport(transport)
      
      # 上传文件,  第一个位置是服务器源地址,第二位置是要下载机器目标位置
      sftp.get('/scripts/gethello.sh', '/tmp/gethello.sh')
      
      
      sftp.close()
      transport.close()
      
      
      #  验证这个文件是否存在了
      result = os.system("sh /tmp/hello.sh")
      
      print(result)
      
      
    • 执行结果

      hello world
      0