婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > python基于paramiko庫遠(yuǎn)程執(zhí)行 SSH 命令,實(shí)現(xiàn) sftp 下載文件

python基于paramiko庫遠(yuǎn)程執(zhí)行 SSH 命令,實(shí)現(xiàn) sftp 下載文件

熱門標(biāo)簽:賓館能在百度地圖標(biāo)注嗎 電銷機(jī)器人 金倫通信 鄭州智能外呼系統(tǒng)中心 汕頭電商外呼系統(tǒng)供應(yīng)商 400電話 申請 條件 云南地圖標(biāo)注 北京外呼電銷機(jī)器人招商 南京crm外呼系統(tǒng)排名 crm電銷機(jī)器人

楔子

我們使用 Python 避免不了和 Linux 打交道,而有時我們需要執(zhí)行一些 shell 命令。如果在本地的話,那么可以通過調(diào)用 os.system 或者 subprocess.Popen 來執(zhí)行,但如果我們希望遠(yuǎn)程執(zhí)行其它機(jī)器上的 shell 命令,這個時候該怎么做呢?下面我們就來推薦一個第三方庫 paramiko,看看如何使用 Python 遠(yuǎn)程操作其它機(jī)器。

paramiko

網(wǎng)絡(luò)傳輸是遵循協(xié)議的,比如 SSH,paramiko 則是實(shí)現(xiàn)了 SSHv2 協(xié)議的一個 Python 第三方庫(底層使用的是 cryptography)。有了 paramiko 之后,我們便可以通過 Python 使用 SSH 協(xié)議來連接遠(yuǎn)程服務(wù)器執(zhí)行操作,和 xshell 本質(zhì)上是類似的。

注意:我們在 Python 代碼中是直接通過 SSH 協(xié)議對遠(yuǎn)程服務(wù)器執(zhí)行操作,而不是調(diào)用 ssh 命令對遠(yuǎn)程服務(wù)器進(jìn)行操作。

既然要使用,那么首先要安裝,直接 pip install paramiko 即可。

paramiko 包含兩大核心組件:SSHClient 和 SFTPClient

SSHClient 的作用類似于 Linux 下的 ssh 命令,是對 SSH 會話的封裝,通常用于執(zhí)行遠(yuǎn)程命令。

SFTPClient 的作用類似于 Linux 下的 sftp 命令,是對 SFTP 客戶端的封裝,用于實(shí)現(xiàn)遠(yuǎn)程文件的操作。比如:文件上傳,下載、修改文件權(quán)限等操作。

下面我們就來介紹它們的用法。

SSHClient 的使用

首先創(chuàng)建一個客戶端實(shí)例, client = paramiko.SSHClient(),然后這個 client 下有很多方法。

connect:實(shí)現(xiàn)遠(yuǎn)程服務(wù)器的連接與認(rèn)證

def connect(
 self,
 hostname,
 port=SSH_PORT,
 username=None,
 password=None,
 pkey=None,
 key_filename=None,
 timeout=None,
 allow_agent=True,
 look_for_keys=True,
 compress=False,
 sock=None,
 gss_auth=False,
 gss_kex=False,
 gss_deleg_creds=True,
 gss_host=None,
 banner_timeout=None,
 auth_timeout=None,
 gss_trust_dns=True,
 passphrase=None,
 disabled_algorithms=None,
):
 """"""

里面參數(shù)很多,但常用的參數(shù)如下:

  • hostname:連接的目的主機(jī), 這個參數(shù)是必須的
  • port=SSH_PORT:指定的端口, 默認(rèn)是 22
  • username=None:登陸的用戶
  • password=None:用戶密碼
  • pkey=None:通過私鑰進(jìn)行身份驗(yàn)證
  • key_filename=None:一個文件名或文件列表, 指定私鑰文件
  • timeout=None:可選的 tcp 連接超時時間
  • allow_agent=True:是否允許連接到 ssh 代理, 默認(rèn)為 True
  • look_for_keys=True:是否在 ~/.ssh 中搜索私鑰文件, 默認(rèn)為 True, 表示允許
  • compress=False:是否打開壓縮

set_missing_host_key_policy:當(dāng)遠(yuǎn)程服務(wù)器沒有本地秘鑰或 HostKeys 對象時的應(yīng)對策略,目前支持三種:

  • AutoAddPolicy:自動添加主機(jī)名以及主機(jī)秘鑰到本地 HostKeys 對象, 不依賴 load_system_host_key 的配置, 即新建立 ssh 連接時不需要再輸入 yes 或 no 進(jìn)行確認(rèn)
  • WarningPolicy:用于記錄一個未知的主機(jī)秘鑰的 Python 警告、并且接收; 所以它的功能和 AutoAddPolicy 是類似的, 只不過會提示這是新連接
  • RejectPolicy:自動拒絕未知的主機(jī)名和秘鑰, 依賴 load_system_host_key 的配置, 該選項(xiàng)為默認(rèn)選項(xiàng)

所以我們一般都會將策略改成 AutoAddPolicy,不然還需要在本地進(jìn)行配置。

exec_command:遠(yuǎn)程執(zhí)行的具體 Linux 命令

open_sftp:在當(dāng)前 ssh 會話的基礎(chǔ)上創(chuàng)建一個 sftp 會話,該方法會返回一個 SFTPClient 對象,可以執(zhí)行文件的上傳、下載等操作。我們后面在 SFTPClient 的時候會說。

下面我們來演示一下:

import paramiko

# 實(shí)例化 SSHClient
client = paramiko.SSHClient()

# 自動添加策略, 保存服務(wù)器的主機(jī)名和密鑰信息; 如果不添加, 那么不再本地 know_hosts 文件中的主機(jī)將無法連接
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 連接 SSH 服務(wù)端, 通過用戶名和密碼進(jìn)行認(rèn)證
# 該過程會創(chuàng)建一個 session, 它是 client 和 server 保持連接的對象
client.connect(hostname='47.94.174.89', port=22, username='root', password='xxxxxxx')

# 執(zhí)行遠(yuǎn)程命令, 該方法會打開一個 paramiko.Channel 對象(類 socket, 一種安全的 SSH 傳輸通道)
# 會返回三個值, 分別是 stdin(標(biāo)準(zhǔn)輸入)、stdout(標(biāo)準(zhǔn)輸出)、stderr(錯誤輸出)
stdin, stdout, stderr = client.exec_command("ls /")

# 打印執(zhí)行結(jié)果, 顯然我們要通過 stdout 來查看, 我們可以調(diào)用 stdout.read 獲取執(zhí)行的結(jié)果
# 但是返回的是字節(jié), 所以需要先獲取對應(yīng)的編碼, 然后再進(jìn)行 decode
print(stdout.read().decode("utf-8"))
"""
bin
boot
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

"""
# 最后關(guān)閉 SSHClient 對象
client.close()

還是很簡單的,如果我們輸入了一條錯誤的命令,那么 stdout 里面就不會有內(nèi)容了,因?yàn)殄e誤信息會保存是在 stderr 中。

import paramiko

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname='47.94.174.89', port=22, username='root', password='xxxxxxx')
stdin, stdout, stderr = client.exec_command("xxxxx")
print(stderr.read().decode("utf-8"))
"""
bash: xxxxx: command not found

"""
client.close()

SFTPClient 的使用

SFTPClient 作為一個 sftp 的客戶端對象,根據(jù) ssh 傳輸協(xié)議的 sftp 會話,可以實(shí)現(xiàn)遠(yuǎn)程文件的操作,例如:上傳、下載、查看權(quán)限和狀態(tài)等等。

import paramiko

# 創(chuàng)建一個 Transport 對象, 使用時會同步創(chuàng)建一個 paramiko.Channel 對象
# 參數(shù)傳遞一個由 IP 和 PORT 組成的元組即可
transport = paramiko.Transport(("47.94.174.89", 22))

# 連接 ssh, 通過 username 和 password
transport.connect(username="root", password="xxxxxxx")

# 獲取 SFTPClient 實(shí)例, 它便相當(dāng)于 Linux 下的 sftp, 我們通過它可以進(jìn)行文件的一些操作
sftp = paramiko.SFTPClient.from_transport(transport)

以上我們便得到的 sftp,那么它都支持哪些操作呢?

  • put(self, localpath, remotepath, callback=None, confirm=True):將本地文件上傳到服務(wù)器, callback 表示回調(diào)函數(shù), 上傳成功后調(diào)用; confirm 表示是否調(diào)用 stat 方法檢查文件狀態(tài), 返回 ls -l 的結(jié)果
  • get(self, remotepath, localpath, callback=None):將文件從服務(wù)器下載到本地
  • mkdir(self, path, mode=o777):在服務(wù)器上創(chuàng)建目錄, mode 表示權(quán)限, 默認(rèn)為 511(o777 是一個變量, 等于 511)
  • rmdir(self, path):刪除服務(wù)器上的目錄
  • remove(self, path):刪除服務(wù)器上的文件
  • rename(self, oldpath, newpath):對服務(wù)器上目錄進(jìn)行重命名
  • stat(self, path):查看文件或目錄的狀態(tài)
  • listdir(self, path='.'):列出服務(wù)器目錄下的文件
  • getcwd(self):查看工作區(qū), 也就是當(dāng)前所在路徑
  • chmod(self, path, mode):改變權(quán)限
  • chown(self, path, uid, gid): 改變用戶和組
  • chdir(self, path):改變工作區(qū)

常用的大概以上這些,我們來演示一下。

# 1. 改變工作區(qū)
sftp.chdir("/usr/local/bin")

# 2. 查看工作區(qū)
print(sftp.getcwd()) # /usr/local/bin
sftp.chdir("/root")
print(sftp.getcwd()) # /root
"""
如果不調(diào)用 sftp.chdir(path) 的時候, 那么打印 sftp.getcwd() 時結(jié)果為 None
但我們知道登陸 Linux 時, 默認(rèn)會在 /root 目錄(對于 root 用戶而言)
對于當(dāng)前的 sftp 而言也確實(shí)如此, 只不過打印 sftp.getcwd() 的時候結(jié)果為 None 罷了 
"""

# 3. 列出當(dāng)前目錄下的文件
print(sftp.listdir("/usr/local")) # ['lib', 'lib64', 'games', 'aegis', ...]

# 4. 查看文件或目錄狀態(tài)
print(sftp.stat("/root/.ssh/authorized_keys"))
"""
-rw------- 1 0  0    0 16 Dec 13:26 ?
"""

# 5. 改變權(quán)限
sftp.chmod("/root/.ssh/authorized_keys", 0o777)
print(sftp.stat("/root/.ssh/authorized_keys"))
"""
-rwxrwxrwx 1 0  0    0 16 Dec 13:26 ?
"""

# 6. 創(chuàng)建目錄
print("dir" in sftp.listdir("/root")) # False
sftp.mkdir("/root/dir", mode=0o777)
print("dir" in sftp.listdir("/root")) # True

# 7. 刪除目錄
sftp.rmdir("/root/dir")
print("dir" in sftp.listdir("/root")) # False

# 8. 刪除文件
sftp.remove("/root/1.py")

# 9. 下載文件
sftp.get("/root/makefile", r"makefile")

# 10. 上傳文件
sftp.put("dockerfile", "/root/dockerfile")

# 最后關(guān)閉 sftp 和 transport
sftp.close()
transport.close()

當(dāng)然我們在介紹 SSHClient 的時候說過,還可以通過 open_sftp 的方式來創(chuàng)建 sftp 客戶端。

import paramiko

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname='47.94.174.89', port=22, username='root', password='xxxxxxx')
# 這種方式創(chuàng)建也是可以的
sftp = client.open_sftp()

以上就是python基于paramiko庫遠(yuǎn)程執(zhí)行 SSH 命令,實(shí)現(xiàn) sftp 下載文件的詳細(xì)內(nèi)容,更多關(guān)于python paramiko庫的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • 用Python自動下載網(wǎng)站所有文件
  • Python解析m3u8拼接下載mp4視頻文件的示例代碼
  • python爬蟲智能翻頁批量下載文件的實(shí)例詳解
  • python 下載文件的幾種方法匯總
  • python 基于selectors庫實(shí)現(xiàn)文件上傳與下載
  • Python實(shí)現(xiàn)FTP文件定時自動下載的步驟
  • Python 使用SFTP和FTP實(shí)現(xiàn)對服務(wù)器的文件下載功能
  • python從ftp獲取文件并下載到本地
  • Python根據(jù)URL地址下載文件并保存至對應(yīng)目錄的實(shí)現(xiàn)
  • python 下載文件的幾種方式分享

標(biāo)簽:浙江 石家莊 錫林郭勒盟 文山 西寧 懷化 梅州 昆明

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python基于paramiko庫遠(yuǎn)程執(zhí)行 SSH 命令,實(shí)現(xiàn) sftp 下載文件》,本文關(guān)鍵詞  python,基于,paramiko,庫,遠(yuǎn)程,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python基于paramiko庫遠(yuǎn)程執(zhí)行 SSH 命令,實(shí)現(xiàn) sftp 下載文件》相關(guān)的同類信息!
  • 本頁收集關(guān)于python基于paramiko庫遠(yuǎn)程執(zhí)行 SSH 命令,實(shí)現(xiàn) sftp 下載文件的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    9191国产精品| 91精品国产入口| 国产精品国产自产拍高清av| 色综合久久久久综合99| 九九在线精品视频| 无码av免费一区二区三区试看| 中文字幕日韩av资源站| 91麻豆精品国产91久久久久| 色屁屁一区二区| 欧美性猛片aaaaaaa做受| 国产精品一品二品| 国产91精品一区二区麻豆网站 | 国产精品综合久久| 欧美唯美清纯偷拍| 久久久久久久久久久99999| 日韩va欧美va亚洲va久久| 免费精品视频在线| 毛片不卡一区二区| 国产综合久久久久影院| 成人国产视频在线观看| 91丨九色丨尤物| 日韩一区二区三免费高清| 久久先锋影音av鲁色资源网| 国产精品麻豆一区二区| 丝袜亚洲精品中文字幕一区| 国产乱对白刺激视频不卡| 91免费精品国自产拍在线不卡| 欧美中文字幕一区二区三区| 久久一区二区三区四区| 亚洲精品欧美激情| 国产伦精一区二区三区| 成人丝袜视频网| 7777精品伊人久久久大香线蕉| 欧美成人bangbros| 天天影视涩香欲综合网| 老司机免费视频一区二区三区| 成人白浆超碰人人人人| 欧美揉bbbbb揉bbbbb| 国产拍欧美日韩视频二区| 国产69精品久久久久毛片| 91免费看`日韩一区二区| 欧美一级久久久久久久大片| 中文字幕亚洲不卡| 亚洲成人你懂的| 欧美优质美女网站| 综合色天天鬼久久鬼色| 国产一区二区女| 中文成人av在线| 国产999精品久久久久久| 26uuu久久天堂性欧美| 日本欧美加勒比视频| 欧美一区二区三区四区久久| 亚洲一区二区免费视频| 在线免费观看视频一区| 亚洲精品国产无套在线观| 成人99免费视频| 亚洲视频一区二区在线| 99vv1com这只有精品| 综合色中文字幕| 欧美最猛黑人xxxxx猛交| 自拍偷在线精品自拍偷无码专区 | 午夜精品一区在线观看| 一区二区在线观看不卡| 成人av网站免费观看| 麻豆久久久久久| 欧美一区二区视频在线观看2020 | 日韩欧美成人一区| 久久精品国产亚洲高清剧情介绍 | 成人av在线播放网址| 国产日韩视频一区二区三区| 国产成人精品影视| 亚洲午夜羞羞片| 精品99久久久久久| 色婷婷综合中文久久一本| 日本成人超碰在线观看| 中文字幕一区二区三区蜜月| 91精品国产高清一区二区三区| 国产成人丝袜美腿| 午夜精品视频在线观看| 亚洲丝袜美腿综合| 国产精品天天摸av网| 精品国产91久久久久久久妲己| 91视频免费观看| 波多野结衣一区二区三区| 一本到一区二区三区| 午夜免费欧美电影| 亚洲激情综合网| 中文字幕一区在线| 国产精品麻豆视频| 国产农村妇女毛片精品久久麻豆| 欧美一级午夜免费电影| 日本高清不卡视频| 91丨九色丨国产丨porny| 成人毛片在线观看| 高清不卡一区二区在线| 国产激情精品久久久第一区二区 | 卡一卡二国产精品| 午夜精品一区二区三区免费视频| 国产精品成人一区二区艾草| 国产人久久人人人人爽| 亚洲一区国产视频| 香蕉久久夜色精品国产使用方法 | 久久综合狠狠综合久久综合88| 欧美日韩精品一区二区三区| 一区二区在线观看免费视频播放| 在线中文字幕一区| 日韩丝袜美女视频| 青青草原综合久久大伊人精品优势 | 97aⅴ精品视频一二三区| 五月激情综合婷婷| 亚洲欧美一区二区视频| 日韩一区二区三区在线| 99re8在线精品视频免费播放| 麻豆精品在线观看| 亚洲午夜视频在线| 午夜精品久久久久久久久久久| 中文字幕第一区二区| 久久精品国产99国产| 亚洲激情校园春色| 国产女人18毛片水真多成人如厕 | 91超碰这里只有精品国产| 99精品欧美一区二区三区小说 | 菠萝蜜视频在线观看一区| 美女久久久精品| 午夜久久电影网| 一区二区三区四区蜜桃| 国产精品久久久久久妇女6080| 欧美成人高清电影在线| 欧美精品一级二级三级| 欧美三级韩国三级日本一级| 97超碰欧美中文字幕| 99久久精品免费看国产免费软件| 国产美女一区二区三区| 久久精品国产亚洲一区二区三区| 五月天婷婷综合| 一区二区高清免费观看影视大全| 日韩理论片网站| 中文字幕免费一区| 国产日韩精品视频一区| 日韩欧美国产综合| 日韩欧美国产不卡| 日韩亚洲欧美高清| 日韩一级欧美一级| 日韩女优av电影| 日韩欧美一区二区免费| 日韩欧美一级特黄在线播放| 日韩午夜电影av| 精品国产sm最大网站| 国产欧美精品一区二区三区四区 | 中文字幕亚洲一区二区av在线 | 亚洲嫩草精品久久| 亚洲欧美激情插| 亚洲国产一区二区在线播放| 亚洲成年人影院| 日韩精品一级中文字幕精品视频免费观看 | 中文字幕一区二区三区在线观看| 国产精品久久久久久久久图文区| 国产乱人伦精品一区二区在线观看| 精品在线免费观看| 国产精选一区二区三区| 成人性生交大片免费看在线播放| 成人综合激情网| 91成人在线精品| 91精品蜜臀在线一区尤物| 91精品视频网| 国产目拍亚洲精品99久久精品| 国产精品久久久久精k8| 视频一区中文字幕| 狠狠色丁香久久婷婷综合_中| 成人免费毛片a| 91国产免费观看| 日韩欧美精品三级| 国产精品国产三级国产专播品爱网| 亚洲自拍偷拍麻豆| 国产高清一区日本| 色先锋资源久久综合| 欧美一区2区视频在线观看| 亚洲国产成人私人影院tom| 一区二区成人在线| 国产激情视频一区二区在线观看| 色婷婷亚洲精品| 久久在线免费观看| 亚洲午夜在线观看视频在线| 国产真实乱对白精彩久久| 色欧美片视频在线观看| 91精品在线免费观看| 亚洲女人小视频在线观看| 美女脱光内衣内裤视频久久网站| 成人福利视频在线| 欧美一卡二卡三卡四卡| 亚洲色图在线看| 国产一区免费电影| 欧美日韩国产另类不卡| 成人欧美一区二区三区视频网页| 日韩中文欧美在线| 色婷婷av久久久久久久| 精品国产网站在线观看| 亚洲gay无套男同| 91亚洲男人天堂| 久久久综合网站|