欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

借助Paramiko通過(guò)Python實(shí)現(xiàn)linux遠(yuǎn)程登陸及sftp的操作

 更新時(shí)間:2020年03月16日 13:33:54   作者:beeworkshop  
這篇文章主要介紹了借助Paramiko通過(guò)Python實(shí)現(xiàn)linux遠(yuǎn)程登陸及sftp,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

paramiko是一個(gè)用于做遠(yuǎn)程控制的模塊,使用該模塊可以對(duì)遠(yuǎn)程服務(wù)器進(jìn)行命令或文件操作,paramiko是用python語(yǔ)言寫(xiě)的一個(gè)模塊,遵循SSH2協(xié)議,支持以加密和認(rèn)證的方式,進(jìn)行遠(yuǎn)程服務(wù)器的連接。

由于使用的是python這樣的能夠跨平臺(tái)運(yùn)行的語(yǔ)言,所以所有python支持的平臺(tái),如Linux, Solaris, BSD, MacOS X, Windows等,paramiko都可以支持,因此,如果需要使用SSH從一個(gè)平臺(tái)連接到另外一個(gè)平臺(tái),進(jìn)行一系列的操作時(shí),paramiko是最佳工具之一。

本文重點(diǎn)給大家介紹借助Paramiko通過(guò)Python實(shí)現(xiàn)linux遠(yuǎn)程登陸及sftp操作。

1. 使用shell命令

$ sshpass -p ${passwd} ssh -p ${port} -l ${user} -o StrictHostKeyChecking=no xx.xx.xx.xx "ls -l"

然后你會(huì)發(fā)現(xiàn),你的輸出有很多你并不需要,但是又不去不掉的一些信息。
對(duì)于shell 命令,可以直接使用管道,或者將標(biāo)準(zhǔn)輸出重定向到文件的方法取得執(zhí)行結(jié)果。

2. 使用 subprocess

通過(guò)Python可以想到使用 os.popen,os.system,commands,subprocess 等一些命令執(zhí)行庫(kù)來(lái)間接獲取系統(tǒng)信息 。這些庫(kù)獲取的 output 不僅有標(biāo)準(zhǔn)輸出,還包含標(biāo)準(zhǔn)錯(cuò)誤信息。所以每次都要對(duì) output 進(jìn)行數(shù)據(jù)清理,然后整理格式化,才能得到我們想要的數(shù)據(jù)。

import subprocess 
ssh_cmd = "sshpass -p ${passwd} ssh -p 22 -l root -o StrictHostKeyChecking=no xx.xx.xx.xx 'ls -l'" 
status, output = subprocess.getstatusoutput(ssh_cmd) 
# 數(shù)據(jù)清理

總之,間接使用ssh命令的幾個(gè)問(wèn)題:

需要額外安裝 sshpass(如果不免密的話(huà))
干擾信息太多,數(shù)據(jù)清理、格式化相當(dāng)麻煩
代碼實(shí)現(xiàn)不夠優(yōu)雅,可讀性太差
ssh 連接不能復(fù)用,一次連接僅能執(zhí)行一次命令
代碼無(wú)法全平臺(tái),僅能在 Linux 和 OSX 上使用

3. 使用Paramiko

安裝

python3 -m pip install paramiko

方法1:基于用戶(hù)名和密碼的 sshclient 方式登錄

該方法無(wú)法復(fù)用ssh連接。

import paramiko 
ssh = paramiko.SSHClient() 
# 允許連接不在know_hosts文件中的主機(jī) 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
# 建立連接 
ssh.connect("xx.xx.xx.xx", username="root", port=22, password="you_password") 
# 使用這個(gè)連接執(zhí)行命令 
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command("ls -l") 
# 獲取輸出 
print(ssh_stdout.read()) 
# 關(guān)閉連接 
ssh.close() 

方法2:基于用戶(hù)名和密碼的 transport 方式登錄

該方法可以復(fù)用連接。

import paramiko 
# 建立連接 
trans = paramiko.Transport(("xx.xx.xx.xx", 22)) 
trans.connect(username="root", password="you_passwd") 
ssh = paramiko.SSHClient() 
ssh._transport = trans 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command("ls -l") 
print(ssh_stdout.read()) 
# 關(guān)閉連接 
trans.close()

方法3:基于公鑰的 SSHClient 方式登錄

該方法無(wú)法復(fù)用ssh連接。

import paramiko 
# 指定本地的RSA私鑰文件 
# 如果建立密鑰對(duì)時(shí)設(shè)置了密碼,password為passphrase。如果沒(méi)有passphrase則無(wú)需指定password參數(shù)。
pkey = paramiko.RSAKey.from_private_key_file('/home/you_username/.ssh/id_rsa', password='12345') 
# 建立連接 
ssh = paramiko.SSHClient() 
ssh.connect(hostname='xx.xx.xx.xx', 
      port=22, 
      username='you_username', 
      pkey=pkey) 
# 執(zhí)行命令 
stdin, stdout, stderr = ssh.exec_command('ls -l') 
# 結(jié)果放到stdout中,如果有錯(cuò)誤將放到stderr中 
print(stdout.read()) 
# 關(guān)閉連接 
ssh.close() 

方法4:基于公鑰的 Transport 方式登錄

該方法可以復(fù)用連接。

import paramiko 
# 指定本地的RSA私鑰文件 
# 如果建立密鑰對(duì)時(shí)設(shè)置了密碼,password為passphrase。如果沒(méi)有passphrase則無(wú)需指定password參數(shù)。 
pkey = paramiko.RSAKey.from_private_key_file('/home/you_username/.ssh/id_rsa', password='12345') 
# 建立連接 
trans = paramiko.Transport(('xx.xx.xx.xx', 22)) 
trans.connect(username='you_username', pkey=pkey) 
ssh = paramiko.SSHClient() 
ssh._transport = trans 
# 執(zhí)行命令,和傳統(tǒng)方法一樣 
stdin, stdout, stderr = ssh.exec_command('df -hl') 
print(stdout.read().decode()) 
# 關(guān)閉連接 
trans.close() 

sftp 文件傳輸

import paramiko 
trans = paramiko.Transport(('xx.xx.xx.xx', 22)) 
# 建立連接 
trans.connect(username='you_username', password='you_passwd') 
# 實(shí)例化一個(gè) sftp對(duì)象,指定連接的通道 
sftp = paramiko.SFTPClient.from_transport(trans) 
# 發(fā)送文件 
sftp.put(localpath='/tmp/11.txt', remotepath='/tmp/22.txt') 
# 下載文件 
sftp.get(remotepath='/tmp/22.txt', localpath='/tmp/33.txt') 
trans.close() 

參考

https://www.linuxprobe.com/log-in-to-remote-service-python.html

總結(jié)

到此這篇關(guān)于借助Paramiko通過(guò)Python實(shí)現(xiàn)linux遠(yuǎn)程登陸及sftp的操作的文章就介紹到這了,更多相關(guān)python paramiko實(shí)現(xiàn)遠(yuǎn)程登陸 sftp內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • flask框架路由常用定義方式總結(jié)

    flask框架路由常用定義方式總結(jié)

    這篇文章主要介紹了flask框架路由常用定義方式,結(jié)合實(shí)例形式總結(jié)分析了flask框架路由的常見(jiàn)定義方式與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-07-07
  • 簡(jiǎn)單實(shí)例帶你了解Python的編譯和執(zhí)行全過(guò)程

    簡(jiǎn)單實(shí)例帶你了解Python的編譯和執(zhí)行全過(guò)程

    python 是一種解釋型的編程語(yǔ)言,所以不像編譯型語(yǔ)言那樣需要顯式的編譯過(guò)程。然而,在 Python 代碼執(zhí)行之前,它需要被解釋器轉(zhuǎn)換成字節(jié)碼,這個(gè)過(guò)程就是 Python 的編譯過(guò)程,還不知道的朋友快來(lái)看看吧
    2023-04-04
  • Python實(shí)現(xiàn)把類(lèi)當(dāng)做字典來(lái)訪問(wèn)

    Python實(shí)現(xiàn)把類(lèi)當(dāng)做字典來(lái)訪問(wèn)

    今天小編就為大家分享一篇Python實(shí)現(xiàn)把類(lèi)當(dāng)做字典來(lái)訪問(wèn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • Python中的二維列表使用及說(shuō)明

    Python中的二維列表使用及說(shuō)明

    這篇文章主要介紹了Python中的二維列表使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python中的匿名函數(shù)使用簡(jiǎn)介

    Python中的匿名函數(shù)使用簡(jiǎn)介

    這篇文章主要介紹了Python中的匿名函數(shù)的使用,lambda是各個(gè)現(xiàn)代編程語(yǔ)言中的重要功能,需要的朋友可以參考下
    2015-04-04
  • 關(guān)于pandas-profiling的降級(jí)之旅

    關(guān)于pandas-profiling的降級(jí)之旅

    這篇文章主要介紹了關(guān)于pandas-profiling的降級(jí)之旅,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Python的Tornado框架的異步任務(wù)與AsyncHTTPClient

    Python的Tornado框架的異步任務(wù)與AsyncHTTPClient

    Tornado的奧義就在于異步處理來(lái)提高單線(xiàn)程的Python程序執(zhí)行性能,這里我們就來(lái)詳解Python的Tornado框架的異步任務(wù)與AsyncHTTPClient,需要的朋友可以參考下
    2016-06-06
  • Python中列表遍歷使用range和enumerate的區(qū)別講解

    Python中列表遍歷使用range和enumerate的區(qū)別講解

    這篇文章主要介紹了Python中列表遍歷使用range和enumerate的區(qū)別,在Python編程語(yǔ)言中,遍歷list有range和enumerate方法,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • Python基于Dlib的人臉識(shí)別系統(tǒng)的實(shí)現(xiàn)

    Python基于Dlib的人臉識(shí)別系統(tǒng)的實(shí)現(xiàn)

    這篇文章主要介紹了Python基于Dlib的人臉識(shí)別系統(tǒng)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • python工具快速為音視頻自動(dòng)生成字幕(使用說(shuō)明)

    python工具快速為音視頻自動(dòng)生成字幕(使用說(shuō)明)

    這篇文章主要介紹了python工具快速為音視頻自動(dòng)生成字幕(使用說(shuō)明),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01

最新評(píng)論