paramiko包含兩個核心組件:SSHClient和SFTPClient,
- SSHClient的作用類似于Linux的ssh命令,是對SSH會話的封裝,該類封裝了傳輸(Transport),通道(Channel)及SFTPClient建立的方法(open_sftp),通常用于執行遠程命令,
- SFTPClient的作用類似與Linux的sftp命令,是對SFTP客戶端的封裝,用以實作遠程檔案操作,如檔案上傳、下載、修改檔案權限等操作,
SSH
1 import paramiko 2 ssh = paramiko.SSHClient() 3 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 跳過known_hosts驗證(yes/no) 4 ssh.connect(hostname='192.168.0.107',port=22,username='root',password='11111!') # 遠程登錄 5 stdin,stdout,stderr = ssh.exec_command('df') # 執行命令 6 res,err = stdout.read(),stderr.read() # 接收命令結果 7 result = res if res else err 8 ssh.close() 9 print(result.decode())
SFTP
1 import paramiko 2 transport = paramiko.Transport(('192.168.0.107',22)) 3 transport.connect(username="root",password='11111!') 4 sftp = paramiko.SFTPClient.from_transport(transport) 5 sftp.put('F:/Python-workspaces/week8/day04/ftp_client/client.py','/opt/client.py') # 傳檔案到服務器的指定目錄 6 sftp.get('/opt/isclick.py','C:/Users/Administrator/Desktop/isclick.py') # 將服務器指令目錄里的檔案傳到本地 7 transport.close()
免密方式:SSH
1 import paramiko 2 privite_key = paramiko.RSAKey.from_private_key_file('id_rsa_2048') 3 ssh = paramiko.SSHClient() 4 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy) 5 ssh.connect(hostname='192.168.0.107',port=22,username='root',pkey=privite_key) 6 stdin,stdout,stderr = ssh.exec_command('df') 7 res1 = stdout.read() 8 err = stderr.read() 9 result = res1 if res1 else err 10 print(result.decode())
免密方式:SFTP
1 import paramiko # 匯入模塊 2 privite_key = paramiko.RSAKey.from_private_key_file('id_rsa_2048') # 定義公鑰,指定公鑰檔案 3 transport = paramiko.Transport(('192.168.0.107',22)) # 實體化transport 4 transport.connect(username='root',pkey=privite_key) # 使用key連接 5 sftp = paramiko.SFTPClient.from_transport(transport) 6 sftp.get('/opt/abc.py', 'qwe.py') 7 sftp.put('id_rsa_2048', '/opt/id_rsa_2048') 8 sftp.close()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/55125.html
標籤:Python
