Python 3.x--paramiko模塊詳解


一、使用paramiko模塊實現SSH功能

下列代碼在Windows上運行,連接虛擬機中centos系統。

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())”這句,會報錯。

類似問題可以為linux系統中~/.ssh/known_hosts文件中的內容。

 二、實現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/68068126

三、使用秘鑰實現SSH功能

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

四、使用秘鑰實現SFTP功能

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM