python ssh实现_SSH协议的Python实现paramiko
paramiko安裝
SSH是一個(gè)協(xié)議,paramiko 是一個(gè)Python 的庫(kù),該庫(kù)支持sshv2協(xié)議,實(shí)現(xiàn)了對(duì)遠(yuǎn)程服務(wù)器執(zhí)行操作
安裝命令:
pip3 install paramiko
SSHClient類與SFTPClient類
paramiko包含兩個(gè)核心組建,分別是SSHClient和SFTPClient
SSHClient:類似于Linux下的ssh命令,用于執(zhí)行遠(yuǎn)程命令。
SFTPClient:類似于Linux下的sftp命令,實(shí)現(xiàn)遠(yuǎn)程文件操作
SSHClient類的方法
connect:實(shí)現(xiàn)遠(yuǎn)程連接認(rèn)證,只有hostname 是必傳參數(shù)
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:設(shè)置沒有做免密的主機(jī)應(yīng)對(duì)的策略
exec_command:在遠(yuǎn)程服務(wù)器上執(zhí)行命令的方法
open_sftp:在遠(yuǎn)程服務(wù)器上打開sftp回話
SFTPClient類的方法
put:上傳文件
get:下載文件
mkdir:創(chuàng)建目錄
remove:移除文件
rmdir:刪除目錄
rename:重命名文件/目錄
stat:查看文件詳細(xì)信息
listdir:列出指定目錄下的文件內(nèi)容
paramiko的基本使用
paramiko.SSHClient兩種認(rèn)證方式
在執(zhí)行遠(yuǎn)程服務(wù)器操作之前,首先需要連接遠(yuǎn)程服務(wù)器并進(jìn)行認(rèn)證。
paramiko 與 ssh命令一樣,支持密碼認(rèn)證和秘鑰認(rèn)證兩種方式
使用密碼認(rèn)證
import paramiko
ip = "192.168.32.130"
port = 22
user = "root"
pwd = "123456"
# 使用密碼認(rèn)證
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)
ssh.connect(ip,port,user,pwd)
使用秘鑰認(rèn)證
import paramiko
ip = "192.168.32.130"
port = 22
user = "root"
pwd = "123456"
# 使用密鑰認(rèn)證
ssh = paramiko.SSHClient()
ssh.connect(ip,port,user,key_filename="私鑰文件")
使用方法
遠(yuǎn)程執(zhí)行命令
import paramiko
ip = "192.168.32.130"
port = 22
user = "root"
pwd = "123456"
### 遠(yuǎn)程執(zhí)行命令
ssh = paramiko.SSHClient()
# 自動(dòng)添加免密
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 連接遠(yuǎn)程主機(jī)
ssh.connect(ip,port,user,pwd)
command = input("請(qǐng)輸入你要執(zhí)行的命令").strip()
# 接收輸出結(jié)果
stdin,stdout,stderr = ssh.exec_command(command)
res = stdout.readlines() + stderr.readlines()
for line in res:
print(line.strip())
ssh.close()
上傳文件到遠(yuǎn)程機(jī)器
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)
# 上傳至遠(yuǎn)程服務(wù)器的目錄/文件
remotepath = "/tmp/test1.txt"
# 本地的一個(gè)文件
localpath = "/tmp/test.txt"
# 上傳
sftp.put(localpath,remotepath)
t.close()
從遠(yuǎn)程機(jī)器下載文件
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)
# 上傳至遠(yuǎn)程服務(wù)器的目錄/文件
remotepath = "/tmp/test1.txt"
# 本地的一個(gè)文件
localpath = "/tmp/test.txt"
# 下載
sftp.get(remotepath,localpath)
t.close()
總結(jié)
以上是生活随笔為你收集整理的python ssh实现_SSH协议的Python实现paramiko的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Pytorch神经网络理论篇】 08
- 下一篇: python tkinter 输入数字