1、使用paramiko模塊實現SSH功能python
下列代碼在Windows上運行,鏈接虛擬機中centos系統。linux
import paramiko # 建立SSH對象 ssh = paramiko.SSHClient() # 容許鏈接不在known_hosts文件上的主機 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 鏈接服務器 ssh.connect(hostname="192.168.0.99", port=22, username="root", password="rootroot") # 執行命令 stdin, stdout, stderr = ssh.exec_command('df') # 獲取結果 result = stdout.read().decode() # 獲取錯誤提示(stdout、stderr只會輸出其中一個) err = stderr.read() # 關閉鏈接 ssh.close() print(stdin, result, err)
注:若是註釋「ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())」這句,會報錯。shell
相似問題能夠爲linux系統中~/.ssh/known_hosts文件中的內容。centos
2、實現SFTP功能服務器
import paramiko # 鏈接虛擬機centos上的ip及端口 transport = paramiko.Transport(("192.168.0.99", 22)) transport.connect(username="root", password="rootroot") # 將實例化的Transport做爲參數傳入SFTPClient中 sftp = paramiko.SFTPClient.from_transport(transport) # 將「calculator.py」上傳到filelist文件夾中 sftp.put('D:\python庫\Python_shell\day05\calculator.py', '/filelist/calculator.py') # 將centos中的aaa.txt文件下載到桌面 sftp.get('/filedir/aaa.txt', r'C:\Users\duany_000\Desktop\test_aaa.txt') transport.close()
注:若是遇到Windows中路徑問題,連接以下網址http://blog.csdn.net/elang6962/article/details/68068126ssh
3、使用祕鑰實現SSH功能spa
import paramiko private_key = paramiko.RSAKey.from_private_key_file('id_rsa31') # 建立SSH對象 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 鏈接服務器 ssh.connect(hostname='192.168.79.9', port=22, username='root', pkey=private_key) stdin, stdout, stderr = ssh.exec_command('ifconfig') res_out = stdout.read() print(res_out.decode()) ssh.close()
4、使用祕鑰實現SFTP功能.net
import paramiko private_key = paramiko.RSAKey.from_private_key_file('id_rsa31') # 鏈接虛擬機centos上的ip及端口 transport = paramiko.Transport(("192.168.79.9", 22)) transport.connect(username="root", pkey=private_key) # 將實例化的Transport做爲參數傳入SFTPClient中 sftp = paramiko.SFTPClient.from_transport(transport) # 將「calculator.py」上傳到filelist文件夾中 sftp.put('D:\python庫\Python_shell\day05\calculator.py', '/filedir/calculator.py') # 將centos中的aaa.txt文件下載到桌面 sftp.get('/filedir/oldtext.txt', r'C:\Users\duany_000\Desktop\oldtext.txt') transport.close()