python的paramiko模塊實(shí)現(xiàn)遠(yuǎn)程控制和傳輸示例
本文介紹了python的paramiko模塊實(shí)現(xiàn)遠(yuǎn)程控制和傳輸示例,分享給大家,具體如下:
1 安裝
sudo pip install paramiko
2 ssh實(shí)現(xiàn)遠(yuǎn)程控制
#LINUX下執(zhí)行shell ssh username@ip #輸入密碼后就可以對(duì)遠(yuǎn)程機(jī)器進(jìn)行操作 ssh username@ip command #輸入密碼后遠(yuǎn)程機(jī)器就執(zhí)行command
ssh運(yùn)行后,想退出,可以kill掉ssh進(jìn)程。
3 paramiko實(shí)現(xiàn)ssh
import paramiko
hostname = '10.1.111.111'
username = 'root'
password = '111111'
port = 22 #整數(shù)不是字符串
paramiko.util.log_to_file('paramiko.log')
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #允許連接不在know_hosts文件中的主機(jī)
ssh.connect(hostname=hostname,port=port,username=username,password=password)
stdin, stdout, stderr = ssh.exec_command("ls") #遠(yuǎn)程執(zhí)行shell命令
print(stdout.readlines()) #輸出回顯結(jié)果
ssh.close()
exec_command命令,以分號(hào);分隔表示先后執(zhí)行兩個(gè)命令;可以傳入多個(gè)參數(shù); exec_command為單個(gè)會(huì)話,執(zhí)行完成之后會(huì)回到登錄時(shí)的缺省目錄,如下:
a='~/Videos'
b='aaa'
ssh.exec_command('cd %s;mkdir %s'%(a,b)) #aaa在a目錄下
ssh.exec_command('mkdir aaa') #aaa在缺省目錄下
遠(yuǎn)端執(zhí)行命令時(shí)如果有交互,可以這樣用 stdin.write(“”)來(lái)完成。
注意:
(1)sudo后要加-S,表示從stdin接收密碼;
(2)stdin.write(‘password\n')最后要加\n作為命令的結(jié)束,否則服務(wù)器一直等待;
(3) flush()寫入的緩沖( flush() any buffer you're writing to )
stdin, stdout, stderr = ssh.exec_command('sudo -S ls')
stdin.write('password\n')
stdin.flush()
可以利用多進(jìn)程或線程可以批量執(zhí)行命令:
import paramiko
import threading
def ssh_cmd(ip,port,username,passwd,cmd):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,port,username,passwd)
for m in cmd:
stdin, stdout, stderr = ssh.exec_command(m)
print(stdout.readlines())
ssh.close()
if __name__=='__main__':
cmd = ['ls','ifconfig']
a=threading.Thread(target=ssh_cmd,args=(ip,port,username,passwd,cmd))
a.start()
a.join()
4 遠(yuǎn)程傳輸文件
scp從本地服務(wù)器復(fù)制到遠(yuǎn)程服務(wù)器
scp local_file remote_username@remote_ip:remote_file
指定了用戶名,命令執(zhí)行后需要輸入用戶密碼;如果不指定用戶名,命令執(zhí)行后需要輸入用戶名和密碼; 從遠(yuǎn)處復(fù)制文件到本地
scp remote_username@remote_ip:remote_file local_file
5 paramiko實(shí)現(xiàn)遠(yuǎn)程傳輸文件
新建一個(gè)SFTPClient對(duì)象,該對(duì)象復(fù)用之前的SSH連接,因此,我們使用sftp傳輸文件時(shí),不需要再次進(jìn)行用戶認(rèn)證。實(shí)現(xiàn)文件
上傳:
sftp = paramiko.SFTPClient.from_transport(ssh.get_transport())
#sftp = ssh.open_sftp() #兩者選其一即可
sftp.put('bbb.c','aaa.c') #文件上傳并重命名
sftp.close()
或者以下實(shí)現(xiàn)文件上傳和下載:
import paramiko
t=paramiko.Transport((hostname,port))
t.connect(username=username,password=password)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('bbb.c','aaa.c') #文件上傳并重命名
sftp.get('m.py', 'mm.py')#文件下載并重命名
t.close()
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
一文帶你了解Python中不同數(shù)據(jù)對(duì)象的空值校驗(yàn)方法
空值校驗(yàn)在數(shù)據(jù)處理和應(yīng)用程序開(kāi)發(fā)中是一個(gè)非常重要的任務(wù),Python提供了多種方式來(lái)檢查不同數(shù)據(jù)對(duì)象(如字符串、列表、字典、集合等)是否為空或包含空值,下面就跟隨小編一起來(lái)學(xué)習(xí)一下吧2024-01-01
python+pillow繪制矩陣蓋爾圓簡(jiǎn)單實(shí)例
這篇文章主要介紹了Python+pillow繪制矩陣蓋爾圓簡(jiǎn)單實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
python實(shí)現(xiàn)兩個(gè)文件夾的同步
這篇文章主要為大家詳細(xì)介紹了利用python實(shí)現(xiàn)兩個(gè)文件夾的同步,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
零基礎(chǔ)寫python爬蟲(chóng)之urllib2中的兩個(gè)重要概念:Openers和Handlers
文章首先介紹了urllib2的2個(gè)方法,然后詳細(xì)介紹了urllib2中的2個(gè)重要概念Openers和Handlers的相關(guān)知識(shí),希望能對(duì)大家有所幫助2014-11-11
python循環(huán)控制之break和continue流程控制語(yǔ)句
這篇文章主要介紹了python循環(huán)控制之break流程控制語(yǔ)句,Python中提供了兩個(gè)關(guān)鍵字用來(lái)控制循環(huán)語(yǔ)句,分別是break和continue,本文都有介紹,需要的朋友可以參考一下2022-03-03
Python基于多線程實(shí)現(xiàn)抓取數(shù)據(jù)存入數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了Python基于多線程實(shí)現(xiàn)抓取數(shù)據(jù)存入數(shù)據(jù)庫(kù)的方法,結(jié)合實(shí)例形式分析了Python使用數(shù)據(jù)庫(kù)類與多線程類進(jìn)行數(shù)據(jù)抓取與寫入數(shù)據(jù)庫(kù)操作的具體使用技巧,需要的朋友可以參考下2018-06-06
python微信公眾號(hào)之關(guān)注公眾號(hào)自動(dòng)回復(fù)
這篇文章主要為大家詳細(xì)介紹了python微信公眾號(hào)之關(guān)注公眾號(hào)自動(dòng)回復(fù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10
python分析實(shí)現(xiàn)微信釘釘?shù)溶浖嚅_(kāi)分身
我發(fā)現(xiàn)壇友分享的很多都是通過(guò)cmd?去start?多個(gè)微信,雖然能實(shí)現(xiàn)多開(kāi),但不夠靈活,比如我上午登錄了一個(gè)微信,下午在登錄就不太好用了,當(dāng)然也可能是我start的姿勢(shì)不對(duì)。于是我就搜了下單實(shí)例原理,自己動(dòng)手實(shí)現(xiàn)了個(gè)隨用隨開(kāi)的2022-02-02
python區(qū)塊鏈簡(jiǎn)易版交易完善挖礦獎(jiǎng)勵(lì)示例
這篇文章主要介紹了python區(qū)塊鏈簡(jiǎn)易版交易完善挖礦獎(jiǎng)勵(lì)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Python常見(jiàn)庫(kù)matplotlib學(xué)習(xí)筆記之畫圖中各個(gè)模塊的含義及修改方法
matplotlib是python最著名的繪圖庫(kù),它提供了一整套和matlab相似的命令A(yù)PI,十分適合交互式地進(jìn)行制圖,下面這篇文章主要給大家介紹了關(guān)于Python常見(jiàn)庫(kù)matplotlib學(xué)習(xí)筆記之畫圖中各個(gè)模塊的含義及修改方法的相關(guān)資料,需要的朋友可以參考下2023-05-05

