python - 經常使用模塊 - paramiko

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()
相關文章
相關標籤/搜索