python ssh实现_SSH协议的Python实现paramiko
paramiko安裝
SSH是一個協議,paramiko 是一個Python 的庫,該庫支持sshv2協議,實現了對遠程服務器執行操作
安裝命令:
pip3 install paramiko
SSHClient類與SFTPClient類
paramiko包含兩個核心組建,分別是SSHClient和SFTPClient
SSHClient:類似于Linux下的ssh命令,用于執行遠程命令。
SFTPClient:類似于Linux下的sftp命令,實現遠程文件操作
SSHClient類的方法
connect:實現遠程連接認證,只有hostname 是必傳參數
connect(self,hostname,port=22,username=None,password=None,
pkey=None,key_filename=None,timeout=None,
allow_agent=True,look_for_keys=True,compress=False)
set_missing_host_key_poilcy:設置沒有做免密的主機應對的策略
exec_command:在遠程服務器上執行命令的方法
open_sftp:在遠程服務器上打開sftp回話
SFTPClient類的方法
put:上傳文件
get:下載文件
mkdir:創建目錄
remove:移除文件
rmdir:刪除目錄
rename:重命名文件/目錄
stat:查看文件詳細信息
listdir:列出指定目錄下的文件內容
paramiko的基本使用
paramiko.SSHClient兩種認證方式
在執行遠程服務器操作之前,首先需要連接遠程服務器并進行認證。
paramiko 與 ssh命令一樣,支持密碼認證和秘鑰認證兩種方式
使用密碼認證
import paramiko
ip = "192.168.32.130"
port = 22
user = "root"
pwd = "123456"
# 使用密碼認證
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)
ssh.connect(ip,port,user,pwd)
使用秘鑰認證
import paramiko
ip = "192.168.32.130"
port = 22
user = "root"
pwd = "123456"
# 使用密鑰認證
ssh = paramiko.SSHClient()
ssh.connect(ip,port,user,key_filename="私鑰文件")
使用方法
遠程執行命令
import paramiko
ip = "192.168.32.130"
port = 22
user = "root"
pwd = "123456"
### 遠程執行命令
ssh = paramiko.SSHClient()
# 自動添加免密
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 連接遠程主機
ssh.connect(ip,port,user,pwd)
command = input("請輸入你要執行的命令").strip()
# 接收輸出結果
stdin,stdout,stderr = ssh.exec_command(command)
res = stdout.readlines() + stderr.readlines()
for line in res:
print(line.strip())
ssh.close()
上傳文件到遠程機器
import paramiko
ip = "192.168.32.130"
port = 22
user = "root"
pwd = "123456"
t = paramiko.Transport((ip,port))
t.connect(username=user,password=pwd)
sftp = paramiko.SFTPClient.from_transport(t)
# 上傳至遠程服務器的目錄/文件
remotepath = "/tmp/test1.txt"
# 本地的一個文件
localpath = "/tmp/test.txt"
# 上傳
sftp.put(localpath,remotepath)
t.close()
從遠程機器下載文件
import paramiko
ip = "192.168.32.130"
port = 22
user = "root"
pwd = "123456"
t = paramiko.Transport((ip,port))
t.connect(username=user,password=pwd)
sftp = paramiko.SFTPClient.from_transport(t)
# 上傳至遠程服務器的目錄/文件
remotepath = "/tmp/test1.txt"
# 本地的一個文件
localpath = "/tmp/test.txt"
# 下載
sftp.get(remotepath,localpath)
t.close()
總結
以上是生活随笔為你收集整理的python ssh实现_SSH协议的Python实现paramiko的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Pytorch神经网络理论篇】 08
- 下一篇: Django模板中如何将函数的变量作为字