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()