paramiko模組學習分享
paramiko是用python語言寫的乙個模組,遵循ssh2協議,支援以加密和認證的方式,進行遠端伺服器的連線。paramiko支援linux, solaris, bsd, macos x, windows等平台通過ssh從乙個平台連線到另外乙個平台。利用該模組,可以方便的進行ssh連線和sftp協議進行sftp檔案傳輸。
首先讓我們理清以下幾個名詞:
paramiko 參考
pip3 install pycrypto
pip3 install paramiko
具體模組使用
sshclient:
遠端連線分為兩種:(1)基於使用者名稱密碼連線 (2)基於公鑰秘鑰連線
通過是用paramiko遠端操作,其實本質也分為兩種:(1)只用sshclient (2)自己建立乙個transport
基於使用者名稱密碼連線
importparamiko #
建立ssh物件
ssh =paramiko.sshclient()
#允許連線不在know_hosts檔案中的主機
ssh.set_missing_host_key_policy(paramiko.autoaddpolicy())
#連線伺服器
ssh.connect(hostname='
host
', port=22, username='
root
', password='
123')#
執行命令 stdout命令結果,stderr錯誤
stdin, stdout, stderr = ssh.exec_command('ls'
)#獲取命令結果
result =stdout.read()
#關閉連線
ssh.close()
sshclient 封裝 transport
importparamiko
transport = paramiko.transport(('
hostname
', 22))
transport.connect(username='
root
', password='
123')
ssh =paramiko.sshclient()
ssh._transport =transport
stdin, stdout, stderr = ssh.exec_command('df'
(stdout.read())
transport.close()
基於公鑰秘鑰連線
importparamiko
private_key = paramiko.rsakey.from_private_key_file('
/home/auto/.ssh/id_rsa')
#建立ssh物件
ssh =paramiko.sshclient()
#允許連線不在know_hosts檔案中的主機
ssh.set_missing_host_key_policy(paramiko.autoaddpolicy())
#連線伺服器
ssh.connect(hostname='
host
', port=22, username='
root
', key=private_key)
#執行命令
stdin, stdout, stderr = ssh.exec_command('df'
)#獲取命令結果
result =stdout.read()
#關閉連線
ssh.close()
sshclient 封裝transport
importparamiko
private_key = paramiko.rsakey.from_private_key_file('
/home/auto/.ssh/id_rsa')
transport = paramiko.transport(('
hostname
', 22))
transport.connect(username='
wupeiqi
', pkey=private_key)
ssh =paramiko.sshclient()
ssh._transport =transport
stdin, stdout, stderr = ssh.exec_command('df'
)transport.close()
sftpclient:
importparamiko
transport = paramiko.transport(('
hostname
',22))
transport.connect(username='
root
',password='
123')
sftp =paramiko.sftpclient.from_transport(transport)
#將location.py 上傳至伺服器 /tmp/test.py
sftp.put('
/tmp/location.py
', '
/tmp/test.py')
#sftp.get('
remove_path
', '
local_path')
transport.close()
importparamiko
private_key = paramiko.rsakey.from_private_key_file('
/home/auto/.ssh/id_rsa')
transport = paramiko.transport(('
hostname
', 22))
transport.connect(username='
root
', pkey=private_key )
sftp =paramiko.sftpclient.from_transport(transport)
#將location.py 上傳至伺服器 /tmp/test.py
sftp.put('
/tmp/location.py
', '
/tmp/test.py')
#sftp.get('
remove_path
', '
local_path')
transport.close()
demo: 實現遠端命令執行和檔案上傳
importparamiko
class
sshconnection(object):
def__init__(self, host='
192.168.12.68
', port=22, username='
locojoy
',pwd='
123321qq!'):
self.host =host
self.port =port
self.username =username
self.pwd =pwd
self.
__k =none
defrun(self):
self.connect()
#連線遠端伺服器
self.upload('
db.py
','/tmp/1.py
') #
將本地的db.py檔案上傳到遠端伺服器的/tmp/目錄下並改名為1.py
self.cmd('
df') #
執行df 命令
self.close() #
關閉連線
defconnect(self):
transport =paramiko.transport((self.host, self.port))
transport.connect(username=self.username, password=self.pwd)
self.
__transport =transport
defclose(self):
self.
__transport
.close()
defupload(self,local_path,target_path):
sftp = paramiko.sftpclient.from_transport(self.__transport
) sftp.put(local_path,target_path)
defcmd(self, command):
ssh =paramiko.sshclient()
ssh._transport = self.__transport
#執行命令
stdin, stdout, stderr =ssh.exec_command(command)
#獲取命令結果
result =stdout.read()
(result)
return
result
obj =sshconnection()
obj.run()
python 學習分享 字典篇
python字典 dictionary a 字典的增刪改查 a key3 value3 在a這個字典裡加入新的元素 key3 value3 del a key1 刪除a字典中的 key1 value1 a.clear 清空詞典所有條目 del a 刪除詞典 a key2 value2 new 將ke...
Python學習資料介紹分享
from 的老趙為我們分享了一篇不錯的文章 如果你要學習python的話,那麼他這篇博文中提供了很多有用的python學習資料的鏈結。你在尋找python學習資料的時候,看看下面老趙的推薦,也許會節省不少時間。兩個月前我在推薦sicp這本書時,我提到mit已經使用python代替經典的sicp這本書...
python的物件導向學習分享
1.關於類屬性和物件屬性,類屬性可以被類或者物件訪問。在類中宣告的物件屬性self.xx只能被物件所訪問。2.類方法和物件方法的區別 當類呼叫類方法時,會把類的引用傳遞過去 物件呼叫類方法時也會自動把物件的引用傳遞過去 但是類沒法直接呼叫物件方法,因為物件方法會預設把自身引用傳遞過去,用類去呼叫物件...