亚洲精品久久国产精品37p,亚洲av无码av制服另类专区,午夜直播免费看,玩弄人妻少妇500系列视频,无码人妻久久久一区二区三区

如果現(xiàn)在需要在 Linux 服務(wù)器上執(zhí)行一系列命令(比如搭建 LNMP 環(huán)境)我應(yīng)該會(huì)第一時(shí)間想到想辦法寫(xiě)個(gè) Shell 腳本,然后扔上去執(zhí)行以下看看結(jié)果。

然而一貫懶惰的我并不想這么去執(zhí)行 Shell 和一些重復(fù)命令。所以俺尋思可以有個(gè)方法本地直接在服務(wù)器端執(zhí)行腳本,尋思生異端,這時(shí)候有某大技霸告訴我有個(gè)叫 paramiko 的 Python 庫(kù),從此開(kāi)啟我新世界的大門(mén)。

遠(yuǎn)程控制的快捷命令(內(nèi)網(wǎng)遠(yuǎn)程桌面控制軟件推薦)-第1張圖片

對(duì)于 paramiko 安裝直接 pip 或者 PyCharm 這里就不多說(shuō)了,如果看到這里你覺(jué)得自己不怎么了解python語(yǔ)法的也不必?fù)?dān)心,你完全可以用 paramiko 單純的執(zhí)行 Shell 命令查看結(jié)果和上傳下載文件,省去重復(fù)的工作。

paramiko 實(shí)現(xiàn)了 SSHv2 協(xié)議(底層使用 cryptography ),包含兩個(gè)核心組件:SSHClient 和 SFTPClient 。 SSHClient 是對(duì) SSH 會(huì)話的封裝,用于執(zhí)行遠(yuǎn)程命令,SFTPClient 是對(duì) SFTP 客戶(hù)端的封裝,用以實(shí)現(xiàn)遠(yuǎn)程文件操作。

這里先舉兩個(gè)列子你應(yīng)該就明白怎么用了,終于開(kāi)始正片了。

遠(yuǎn)程控制的快捷命令(內(nèi)網(wǎng)遠(yuǎn)程桌面控制軟件推薦)-第2張圖片

SSHClient 的列子:

# -*- coding: utf-8 -*-import paramikoclient = paramiko.SSHClient()# 實(shí)例化SSHClientclient.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 自動(dòng)添加策略,保存服務(wù)器的主機(jī)名和密鑰信息,如果不添加,那么不再本地know_hosts文件中記錄的主機(jī)將無(wú)法連接client.connect(hostname='192.168.23.134', port=22, username='ftoz', password='123456')# 連接SSH服務(wù)端,以用戶(hù)名和密碼進(jìn)行認(rèn)證# 打開(kāi)一個(gè)Channel并執(zhí)行命令stdin, stdout, stderr = client.exec_command('ls')  # stdout 為正確輸出,stderr為錯(cuò)誤輸出,同時(shí)是有1個(gè)變量有值# 打印執(zhí)行結(jié)果print(stdout.read().decode('utf-8'))# 關(guān)閉SSHClientclient.close()

輸出:

遠(yuǎn)程控制的快捷命令(內(nèi)網(wǎng)遠(yuǎn)程桌面控制軟件推薦)-第3張圖片

這里說(shuō)明一下:

client = paramiko.SSHClient(),client.set_missing_host_key_policy(paramiko.AutoAddPolicy())你可以理解為固定姿勢(shì)。client.connect(hostname='192.168.1.105', port=22, username='ftoz',password='123456')這里就是你的linux變量依次為地址、端口(總共65535個(gè)端口,不過(guò)ssh默認(rèn)是22端口)、登錄名、密碼。stdin, stdout, stderr = client.exec_command('df -h ')這里就是核心你需要做的shell命令,這三個(gè)變量不用按照這種姿勢(shì),你可以隨意,不過(guò)按照順序你知道里面裝的什么數(shù)據(jù)就行(重點(diǎn)在輸出和錯(cuò)誤)。connect():這個(gè)是實(shí)現(xiàn)遠(yuǎn)程服務(wù)器連接和認(rèn)證的,參數(shù)有:hostname 連接的目標(biāo)主機(jī)port=SSH_PORT 指定端口username=None 驗(yàn)證的用戶(hù)名password=None 驗(yàn)證的用戶(hù)密碼pkey=None 私鑰方式用于身份驗(yàn)證key_filename=None 一個(gè)文件名或文件列表,指定私鑰文件timeout=None 可選的tcp連接超時(shí)時(shí)間allow_agent=True, 是否允許連接到ssh代理,默認(rèn)為T(mén)rue 允許look_for_keys=True 是否在~/.ssh中搜索私鑰文件,默認(rèn)為T(mén)rue 允許compress=False, 是否打開(kāi)壓縮。set_missing_host_key_policy():這個(gè)是設(shè)置遠(yuǎn)程服務(wù)器沒(méi)有在know_hosts文件中記錄時(shí)的應(yīng)對(duì)策略。(可以理解為避免報(bào)錯(cuò)),參數(shù)有:AutoAddPolicy 自動(dòng)添加主機(jī)名及主機(jī)密鑰到本地HostKeys對(duì)象,不依賴(lài)load_system_host_key的配置。即新建立ssh連接時(shí)不需要再輸入yes或no進(jìn)行確認(rèn)WarningPolicy 用于記錄一個(gè)未知的主機(jī)密鑰的python警告。并接受,功能上和AutoAddPolicy類(lèi)似,但是會(huì)提示是新連接RejectPolicy 自動(dòng)拒絕未知的主機(jī)名和密鑰,依賴(lài)load_system_host_key的配置。此為默認(rèn)選項(xiàng)exec_command():這是寫(xiě)你需要執(zhí)行的命令的

接下來(lái)你就可以拿出輸出做一些該干嘛(ke)干嘛(pa)的事情了,這里先舉這個(gè)簡(jiǎn)單的列子。

2020 精選 阿里/騰訊等一線大廠 面試、簡(jiǎn)歷、進(jìn)階、電子書(shū) 私聊我回復(fù)「資料」免費(fèi)獲取

SFTPClient 常用方法:

t = paramiko.Transport(('192.168.23.134', 22))# 獲取Transport實(shí)例t.connect(username='ftoz', password='123456')# 連接SSH服務(wù)端,使用passwordsftp = paramiko.SFTPClient.from_transport(t)sftp.put("F:S12312.txt","/home/ftoz/zxc12312.txt")#執(zhí)行上傳動(dòng)作sftp.get("/home/ftoz/zxc12312.txt", "F:S12312.txt")#執(zhí)行下載動(dòng)作t.close()

SFTPCLient 作為一個(gè) sftp 的客戶(hù)端對(duì)象,根據(jù) ssh 傳輸協(xié)議的 sftp 會(huì)話,實(shí)現(xiàn)遠(yuǎn)程文件操作,如上傳、下載、權(quán)限、狀態(tài)

from_transport(cls,t) 創(chuàng)建一個(gè)已連通的SFTP客戶(hù)端通道put(localpath, remotepath, callback=None, confirm=True) 將本地文件上傳到服務(wù)器 參數(shù)confirm:是否調(diào)用stat()方法檢查文件狀態(tài),返回ls -l的結(jié)果get(remotepath, localpath, callback=None) 從服務(wù)器下載文件到本地mkdir() 在服務(wù)器上創(chuàng)建目錄remove() 在服務(wù)器上刪除目錄rename() 在服務(wù)器上重命名目錄stat() 查看服務(wù)器文件狀態(tài)listdir() 列出服務(wù)器目錄下的文件

最后養(yǎng)成隨關(guān)閉的好習(xí)慣 client.close()。

評(píng)論(0條)

刀客源碼 游客評(píng)論