第三方模块paramiko的使用
2018-06-17 23:28:30来源:未知 阅读 ()
"Paramiko" is a combination of the Esperanto words for "paranoid" and "friend". It's a module for Python 2.7/3.4+ that implements the SSH2 protocol for secure (encrypted and authenticated) connections to remote machines. Unlike SSL (aka TLS), SSH2 protocol does not require hierarchical certificates signed by a powerful central authority. You may know SSH2 as the protocol that replaced Telnet and rsh for secure access to remote shells, but the protocol also includes the ability to open arbitrary channels to remote services across the encrypted tunnel (this is how SFTP works, for example).
paramiko是一个远程控制模块,使用它可以很容易的再python中使用SSH执行命令和使用SFTP上传或下载文件;而且paramiko直接与远程系统交互,无需编写服务端。
例一(实现一个简单的SSH客户端):
1 import paramiko 2 3 #实例化一个ssh客户端实例 4 ssh = paramiko.SSHClient() 5 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 6 #连接远程 --- 填入要连接的地址,端口,用户,密码 7 ssh.connect(hostname="192.168.56.50", port=22, username='libin', password='123456') 8 9 while True: 10 command = input(">>>:") 11 12 #exec_command()返回三个值:the stdin, stdout, and stderr of the executing command, as a 3-tuple 13 stdin, stdout, stderr = ssh.exec_command(command) 14 15 result = stdout.read() 16 error = stderr.read() 17 18 if result: 19 print(result.decode()) 20 else: 21 print(error.decode()) 22 #关闭连接 23 ssh.close()
例二(实现文件的上传和下载操作):
1 import paramiko 2 3 transport = paramiko.Transport('192.168.56.50', 22) 4 transport.connect(username='libin', password='123456') 5 #实例化一个SFTP客户端实例 6 sftp = paramiko.SFTPClient.from_transport(transport) 7 8 #put('localpath', 'remotepath')上传本地文件至服务器 9 #sftp.put(r'E:\tempdownload\Sau_Authentication_Client_For_Windows_V6.82.exe', '/tmp/abc.exe') 10 #get('remotepath', 'localpath')将远程文件下载至本地 11 sftp.get('/tmp/abc.exe', r'E:\tempdownload\abc.exe') 12 13 transport.close()
为了连接安全,我们可以对上述两例稍加改变,使其使用密钥认证建立连接。
例四(以密钥认证实现SSH):
1 import paramiko 2 3 #实例化一个ssh客户端实例 4 ssh = paramiko.SSHClient() 5 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 6 #连接远程 --- 填入要连接的地址,端口,用户,密码 7 8 #导入私钥文件 9 private_key = paramiko.RSAKey.from_private_key_file('id_rsa_2048') 10 #连接远程 11 ssh.connect(hostname="192.168.56.50", port=22, username='libin', pkey=private_key) #无需再填入用户密码 12 13 while True: 14 command = input(">>>:") 15 16 #exec_command()返回三个值:the stdin, stdout, and stderr of the executing command, as a 3-tuple 17 stdin, stdout, stderr = ssh.exec_command(command) 18 19 result = stdout.read() 20 error = stderr.read() 21 22 if result: 23 print(result.decode()) 24 else: 25 print(error.decode()) 26 #关闭连接 27 ssh.close()
例五(以密钥认证实现SFTP):
1 import paramiko 2 3 transport = paramiko.Transport('192.168.56.50', 22) 4 #导入私钥文件 5 privat_key = paramiko.RSAKey.from_private_key_file('id_rsa_2048') 6 transport.connect(username='libin', pkey=privat_key) 7 #实例化一个SFTP客户端实例 8 sftp = paramiko.SFTPClient.from_transport(transport) 9 10 #put('localpath', 'remotepath')上传本地文件至服务器 11 sftp.put(r'E:\tempdownload\test.exe', '/tmp/123.exe') 12 13 # # get('remotepath', 'localpath')将远程文件下载至本地 14 # sftp.get('/tmp/abc.exe', r'E:\tempdownload\abc.exe') 15 transport.close()
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Django项目中使用qq第三方登录。 2019-08-13
- python3 enum模块的应用 2019-08-13
- 利用python自动生成verilog模块例化模板 2019-08-13
- Python random模块(以后用到一个再更新一个) 2019-07-24
- xadmin进行全局配置(修改模块名为中文以及其他自定义的操作 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash