paramiko模块提供了ssh及sft进行远程登陆服务器执行命令和上传下载文件的功能。这是一个第三方的软件包,使用以前须要安装。python
一、安装paramiko服务器
pip3 install paramiko
二、paramiko使用:ssh
在使用paramiko以前须要先导入该模块。spa
(1)paramiko基于密码链接服务器code
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 '''基于用户名密码验证的链接''' 5 import paramiko 6 7 #建立SSH对象 8 ssh = paramiko.SSHClient() 9 10 #容许链接不在know_hosts文件中的主机(默认不在know_Hosts中的主机链接时,服务器有个yes肯定,这里用这个就是应对点击yes) 11 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 12 13 #链接服务器 14 ssh.connect(hostname='192.168.22.132', port=22, username='test', password='123456') 15 16 while True: 17 cmd = input('>>:').strip() 18 if not cmd: continue 19 if cmd == 'q':break 20 #执行命令 21 stdin, stdout, stderr = ssh.exec_command(cmd) 22 23 #获取命令结果 24 result = list(filter(lambda x:x is not None,[stdout.read(),stderr.read()]))[0].decode('utf8') 25 if not result: 26 print(stderr.read().decode('utf8')) 27 else: 28 print(result) 29 30 #关闭链接 31 ssh.close()
(2)paramiko基于密码的ftp对象
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import paramiko 5 6 transport = paramiko.Transport(('192.168.22.132', 22)) 7 transport.connect(username='test', password='123456') 8 9 sftp = paramiko.SFTPClient.from_transport(transport) 10 11 #将local.py上传到服务器/home/test/test.py 12 sftp.put('local.py', '/home/test/test.py') 13 14 #将remote_path.py 下载到本地local_path.py 15 sftp.get('remote_path.py', 'local_path.py') 16 17 transport.close()
(3)paramiko基于key文件链接服务器blog
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import paramiko 5 6 private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.shh/id_rsa') 7 8 #建立SSH对象 9 ssh = paramiko.SSHClient() 10 11 #容许链接不在know_hosts文件中的主机(第一次链接时存在的问题) 12 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 13 14 #链接服务器 15 ssh.connect(hostname='192.168.22.132', port=22, username='test', key=private_key) 16 17 #执行命令 18 stdin, stdout, stderr = ssh.exec_command('df') 19 20 #获取执行结果 21 result = filter(lambda x: x is not None,[stdout.read(),stderr.read()]).decode('utf8') 22 if not result: 23 print(stderr.read().decode('utf8')) 24 else: 25 print(result) 26 27 ssh.close()