日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python paramiko使用_使用python的paramiko模块实现ssh与scp功能

發布時間:2025/4/5 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python paramiko使用_使用python的paramiko模块实现ssh与scp功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#1. 介紹

這篇文章簡單地介紹了python的paramiko模塊的用法,paramiko實現了SSH協議,能夠方便地與遠程計算機交互。簡單的說,就是你在terminal下執行的如下語句,現在可以通過python的paramiko實現了。

# 執行shell語句

ssh -i ~/.ssh/id_rsa -p 1098 rds@12.164.145.21 -e 'ls -al'

# 拷貝數據到遠程計算機

scp -i ~/.ssh/id_rsa -P 1098 -r data rds@12.164.145.21:~/data

這里不討論shell與python實現的優缺點,如果你沒有需求,也不會看到這篇博客了。我個人使用paramiko是為了使用python的多線程,并發地對多臺遠程計算機執行相同的操作。

這篇博客雖然篇幅不大,但是,可能是目前網絡上最好的中文入門教程了。那就開始吧!

2. 安裝

安裝非常簡單,直接使用pip安裝即可:

sudo pip instal paramiko

3. 建立SSH連接

使用密碼連接:

import paramiko

ssh = paramiko.SSHClient()

#這行代碼的作用是允許連接不在know_hosts文件中的主機。

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect("IP", port, "username", "password")

使用私鑰連接:

ssh = paramiko.SSHClient()

ssh.connect('10.120.48.109', port, '用戶名',

key_filename='私鑰')

連接以后可以執行shell命令:

In [8]: ssh.exec_command('ls')

Out[8]:

(>>,

>>,

>>)

執行shell命令以后,并不會立即打印命令的執行結果,而是返回幾個Channel, 只能像下面這樣獲取輸出:

In [9]: stdin, stdout, stderr = ssh.exec_command('ls')

In [10]: print stdout.readlines()

['AgentBackkup_2015-06-11\n', 'AgentBackup\n', 'log\n', 'mysql.sh\n', 'rdsAgent\n']

注意: 命令執行出錯并不會拋出異常,所以,對于命令出錯需要根據自己的需求進行相應的處理:

In [54]: stdin, stdout, stderr = ssh.exec_command('cat file_not_found')

In [55]: print stdout.readlines()

[]

In [56]: print stderr.readlines()

[u'cat: file_not_found: No such file or directory\n']

In [57]: stdin, stdout, stderr = ssh.exec_command('ls')

In [58]: print stderr.readlines()

[]

4. SCP vs SFTP

通過paramiko還可以傳輸文件,這是我寫這篇博客的主要原因。搜了很多博客,都沒有說明白如何通過paramiko在計算機之間傳輸文件,通過閱讀官方文檔,發現有如下兩種方式:

sftp = paramiko.SFTPClient.from_transport(ssh.get_transport())

sftp = ssh.open_sftp()

即新建一個SFTPClient對象,該對象復用之前的SSH連接,因此,我們使用sftp傳輸文件時,不需要再次進行用戶認證。

文件上傳

In [59]: sftp.put('memory.py', 'memory.py')

Out[59]:

文件下載

In [60]: sftp.get('memory.py', 'backup.py')

執行命令

paramiko并沒有提供一個叫做scp的子模塊,如果我們希望在計算機之間傳輸數據,可以通過sftp(sftp實現了scp所有的功能,也就沒有必再實現一個scp)傳輸文件,還可以通過sftp執行命令,如下所示:

In [44]: sftp.listdir()

Out[44]:

['.viminfo',

'.bash_logout',

'.bash_history',

'AgentBackkup_2015-06-10',

'AgentBackup',

'rdsAgent']

In [45]: sftp.rename('AgentBackkup_2015-06-10', 'AgentBackkup_2015-06-11')

In [46]: sftp.listdir()

Out[46]:

['AgentBackkup_2015-06-11',

'.viminfo',

'.bash_logout',

'.bash_history',

'AgentBackup',

'rdsAgent']

sftp提供了很多命令,具體內容可以參考官方文檔 。

總結

以上是生活随笔為你收集整理的python paramiko使用_使用python的paramiko模块实现ssh与scp功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。