標籤:編譯 命令 exe int command 檔案下載 ssh 主機 下載到本地
@@@文章內容參照老男孩教育 Alex金角大王,武Sir銀角大王@@@
一、Paramiko模組安裝
系統內容CentOS 7,Python3.6
1、安裝Python3.6
2、yum安裝openssl-devel
1 [[email protected] ~]# yum install openssl-devel -y
3、重新編譯ssl模組
1 cd Python-3.6.22 ./configure --with-ssl3 make4 sudo make install
4使用pip安裝paramiko模組
1 [[email protected] ~]# python3 -m pip install paramiko
二、SSHClient
用於串連遠程伺服器並執行基本命令
基於使用者名稱密碼串連:
1 import paramiko 2 3 # 建立SSH對象 4 ssh = paramiko.SSHClient() 5 # 允許串連不在know_hosts檔案中的主機 6 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 7 # 串連伺服器 8 ssh.connect(hostname = ‘10.0.0.10‘, port = 22, username = ‘root‘, password=‘12345‘) 9 10 # 執行命令11 stdin,stdout,stderr = ssh.exec_command(‘df‘)12 # 擷取命令結果13 result = stdout.read() or stderr.read()14 print(result.decode())15 16 # 關閉串連17 ssh.close()
基於公開金鑰密鑰串連
1 import paramiko 2 3 private_key = paramiko.RSAKey.from_private_key_file(‘id_rsa_2048‘) 4 5 # 建立SSH對象 6 ssh = paramiko.SSHClient() 7 # 允許串連不在know_hosts檔案中的主機 8 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 9 # 串連伺服器10 ssh.connect(hostname = ‘10.0.0.10‘,port = 22,username = ‘root‘, pkey=private_key)11 12 # 執行命令13 stdin,stdout,stderr = ssh.exec_command(‘df‘)14 # 擷取命令結果15 result = stdout.read() or stderr.read()16 print(result.decode())17 18 # 關閉串連19 ssh.close()
三、SFTPClient
用於串連遠程伺服器並執行上傳下載
基於使用者名稱密碼上傳下載
1 import paramiko 2 3 transport = paramiko.Transport((‘10.0.0.10‘,22)) 4 transport.connect(username=‘root‘,password=‘12345‘) 5 6 sftp = paramiko.SFTPClient.from_transport(transport) 7 # 將檔案上傳至伺服器 8 sftp.put(‘socketserver並發.py‘,‘/tmp/test.py‘) 9 # 將檔案下載到本地10 sftp.get(‘Python-3.6.2.tar‘,‘Python.tar‘)11 12 transport.close()
基於公開金鑰密鑰上傳下載
1 import paramiko 2 3 private_key = paramiko.RSAKey.from_private_key_file(‘id_rsa_2048‘) 4 5 transport = paramiko.Transport((‘10.0.0.10‘,22)) 6 transport.connect(username=‘root‘,pkey=private_key) 7 8 sftp = paramiko.SFTPClient.from_transport(transport) 9 # 將檔案上傳至伺服器10 sftp.put(‘socketserver並發.py‘,‘/tmp/test2.py‘)11 # 將檔案下載到本地12 sftp.get(‘Python-3.6.2.tar‘,‘Python.tar‘)13 14 transport.close()
Python基礎13 - Paramiko模組學習