最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python如何使用paramiko模塊連接linux

 更新時間:2020年03月18日 10:55:26   作者:flag_HW  
這篇文章主要介紹了Python如何使用paramiko模塊連接linux,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

python程序需要連接linux時,需要使用密碼或者秘鑰驗證以登錄os進行命令操作或者文件傳輸,python中實現(xiàn)此功能的模塊為paramiko;下面是該模塊的基礎(chǔ)用法

下面是通過密碼進行l(wèi)inux登錄執(zhí)行命令和文件傳輸示例

import paramiko
#python程序需要批量管理linux時需要借助paramilo模塊登錄linux執(zhí)行命令或者傳輸文件,下面是最簡單的登錄主機執(zhí)行命令
ssh_client = paramiko.SSHClient() #創(chuàng)建連接對象
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #允許連接不在know_hosts文件中的主機,首次登陸其它機器時會用到
ssh_client.connect(hostname="192.168.226.128", port=22, username="root", password="123456") #使用用戶名密碼連接主機
stdin, stdout, stderr = ssh_client.exec_command("df -h") #執(zhí)行命令獲取結(jié)果
#獲取命令結(jié)果
res,err = stdout.read(),stderr.read()
result = res if res else err  ##這里我們使用三元運算
print(result.decode(encoding="utf-8"))
ssh_client.close() #關(guān)閉ssh


#下面是傳輸文件
transport = paramiko.Transport(("192.168.226.128", 22))
transport.connect(username="root", password="123456")
my_sftp = paramiko.SFTPClient.from_transport(transport)
my_sftp.put("__init__.py", "/root/123.tst") #__init__.py是本地文件名,其它目錄需要寫絕對路徑形式, /root/123.tst上傳到128的root目錄且命名為123.tst
my_sftp.get("/root/hello.py", "hello_get.py") #將遠端的hello.py 下載到本地當(dāng)前目錄且重命名為hello_get.py
transport.close()

代碼中出現(xiàn)明文密碼是不安全也不符合編程規(guī)范的,為了更加安全我們可使用秘鑰來進行登錄。

首先兩臺linux機器進行如下操作后就可以實現(xiàn)192.168.226.128免密登錄192.168.226.129

1、正常條件下128主機ssh連接129機器整個過程如下,需要數(shù)據(jù)密碼

2、輸入ssh-keygen后,所有命令直接回車,在登錄用戶家目錄下.ssh目錄下會生成id_rsa和id_rsa.pub兩個文件,其中id_rsa是私鑰id_rsa.pub是公鑰

3、ssh-copy-id命令可以將本地公鑰拷貝到129主機的root用戶家目錄下的authorized_keys文件里

3、此時128就可以免密登錄129了,但是129不能免密登錄128;如果需要則129需要進行與128相同的操作??梢悦饷苁?28的id_rsa與129對應(yīng)用戶的authorized_keys文件內(nèi)的公鑰能夠校驗成功

4、對應(yīng)的如果當(dāng)前只進行上述操作,此時win機器可以通過128的id_rsa實現(xiàn)免密登錄129機器,具體實現(xiàn)如下

import paramiko
#python程序需要批量管理linux時需要借助paramilo模塊登錄linux執(zhí)行命令或者傳輸文件,下面是最簡單的登錄主機執(zhí)行命令
private_key = paramiko.RSAKey.from_private_key_file("id_rsa")
ssh = paramiko.SSHClient() #創(chuàng)建連接對象
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #允許連接不在know_hosts文件中的主機
ssh.connect(hostname="192.168.226.129", port=22, username="root", pkey=private_key) #使用用戶名密碼連接主機
stdin, stdout, stderr = ssh.exec_command("df -h") #執(zhí)行命令獲取結(jié)果
#獲取命令結(jié)果
res,err = stdout.read(),stderr.read()
result = res if res else err  ##這里我們使用三元運算
print(result.decode(encoding="utf-8"))
ssh.close() #關(guān)閉ssh


#下面是傳輸文件
transport = paramiko.Transport(("192.168.226.129", 22))
transport.connect(username="root", pkey=private_key)
my_sftp = paramiko.SFTPClient.from_transport(transport)
my_sftp.put("__init__.py", "/root/123.tst")
my_sftp.get("/root/hello.py", "hello_get129.py")
transport.close()

注意:

1、此時雖然有128的私鑰,但是無法免密登錄128,登錄時會報認證失敗,paramiko.ssh_exception.AuthenticationException: Authentication failed;此時還只能通過密碼登錄128或者通過將129生成的公鑰拷貝給128使用129私鑰登錄128。

2、不能使用128的公鑰來登錄129,此時win機器模擬的是128免密登錄129當(dāng)然需要使用128的私鑰了,否則無法和129本地文件內(nèi)128的公鑰無法配對;使用公鑰登錄129 會報不合法的私鑰文件paramiko.ssh_exception.SSHException: not a valid RSA private key file

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用python3批量下載rbsp數(shù)據(jù)的示例代碼

    使用python3批量下載rbsp數(shù)據(jù)的示例代碼

    這篇文章主要介紹了使用python3批量下載rbsp數(shù)據(jù)的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • python遞歸法解決棋盤分割問題

    python遞歸法解決棋盤分割問題

    這篇文章主要為大家詳細介紹了python遞歸法解決棋盤分割問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • python GUI庫圖形界面開發(fā)之PyQt5拖放控件實例詳解

    python GUI庫圖形界面開發(fā)之PyQt5拖放控件實例詳解

    這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5使用拖放控件實例詳解,需要的朋友可以參考下
    2020-02-02
  • Python 代碼實現(xiàn)列表的最小公倍數(shù)

    Python 代碼實現(xiàn)列表的最小公倍數(shù)

    這篇文章主要介紹了Python 代碼實現(xiàn)列表的最小公倍數(shù),代碼實現(xiàn)了計算列表中元素的最小公倍數(shù)的功能,包括公式介紹,需要的朋友可以參考一下
    2021-11-11
  • Python Numpy之linspace用法說明

    Python Numpy之linspace用法說明

    這篇文章主要介紹了Python Numpy之linspace用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • python兼容VBA的用法詳解

    python兼容VBA的用法詳解

    這篇文章主要介紹了python兼容VBA的用法詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Mac PyCharm中的.gitignore 安裝設(shè)置教程

    Mac PyCharm中的.gitignore 安裝設(shè)置教程

    這篇文章主要介紹了Mac PyCharm中的.gitignore 安裝設(shè)置教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • 單鏈表反轉(zhuǎn)python實現(xiàn)代碼示例

    單鏈表反轉(zhuǎn)python實現(xiàn)代碼示例

    這篇文章主要介紹了單鏈表反轉(zhuǎn)python實現(xiàn),分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • python3基于OpenCV實現(xiàn)證件照背景替換

    python3基于OpenCV實現(xiàn)證件照背景替換

    這篇文章主要為大家詳細介紹了python3基于OpenCV實現(xiàn)證件照背景替換,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • python如何實現(xiàn)不用裝飾器實現(xiàn)登陸器小程序

    python如何實現(xiàn)不用裝飾器實現(xiàn)登陸器小程序

    這篇文章主要介紹了python如何實現(xiàn)不用裝飾器實現(xiàn)登陸器小程序,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12

最新評論

景德镇市| 江门市| 晋城| 马公市| 什邡市| 临邑县| 会东县| 堆龙德庆县| 湘潭县| 当阳市| 平罗县| 图们市| 宜城市| 扎赉特旗| 安庆市| 武宁县| 和龙市| 大石桥市| 永登县| 精河县| 株洲市| 读书| 布尔津县| 雷山县| 聂荣县| 吉安县| 乌鲁木齐县| 鄂伦春自治旗| 萝北县| 鹿泉市| 潞西市| 宜都市| 密云县| 钟山县| 浦江县| 湾仔区| 许昌县| 海门市| 尼勒克县| 衡南县| 宜章县|