python3 paramiko實現ssh客戶端

2021-09-07 19:07:32 字數 2421 閱讀 9449

ssh客戶端實現主要有以下四個問題:

第乙個問題是在python中ssh客戶端使用哪個包實現----我們這裡使用的是paramiko

第二個問題是怎麼連線伺服器----連線伺服器直接使用connect()函式就可以了,有個坑是不在known_hosts檔案中的機器預設不允許連線需要處理一下

第三個問題是連上之後怎麼執行命令----連上之後直接用exec_command()函式就可以執行命令

第四個問題是怎麼讀取命令執行結果----exec_command()函式會返回函式執行結果,用乙個引數接收一下就可以了

我們這裡整個整序的流程是:

使用使用者名稱密碼登入主機----如果登入成功則執行whoami命令----列印whoami命令結果----退出ssh會話

import

logging

import

sysfrom paramiko import

authenticationexception

from paramiko.client import

sshclient, autoaddpolicy

from paramiko.ssh_exception import

novalidconnectionserror

class

mysshclient():

def__init__

(self):

self.ssh_client =sshclient()

#此函式用於輸入使用者名稱密碼登入主機

defssh_login(self,host_ip,username,password):

try:

#設定允許連線known_hosts檔案中的主機(預設連線不在known_hosts檔案中的主機會拒絕連線丟擲sshexception)

self.ssh_client.set_missing_host_key_policy(autoaddpolicy())

self.ssh_client.connect(host_ip,port=22,username=username,password=password)

except

authenticationexception:

logging.warning(

'username or password error')

return 1001

except

novalidconnectionserror:

logging.warning(

'connect time out')

return 1002

except

: logging.warning(

'unknow error')

print("

unexpected error:

", sys.exc_info()[0])

return 1003

return 1000

#此函式用於執行command引數中的命令並列印命令執行結果

defexecute_some_command(self,command):

stdin, stdout, stderr =self.ssh_client.exec_command(command)

print

(stdout.read().decode())

#此函式用於退出登入

defssh_logout(self):

logging.warning(

'will exit host')

self.ssh_client.close()

if__name__ == '

__main__':

#遠端主機ip

host_ip = '

192.168.220.129'#

遠端主機使用者名稱

username = '

root'#

遠端主機密碼

password = '

toor'#

要執行的shell命令;換成自己想要執行的命令

#自己使用ssh時,命令怎麼敲的command引數就怎麼寫

command = '

whoami'#

例項化 my_ssh_client =mysshclient()

#登入,如果返回結果為1000,那麼執行命令,然後退出

if my_ssh_client.ssh_login(host_ip,username,password) == 1000:

logging.warning(f

"-login success, will execute command:")

my_ssh_client.execute_some_command(command)

my_ssh_client.ssh_logout()

參考:

python3 paramiko實現ssh客戶端

ssh客戶端實現主要有以下四個問題 第乙個問題是在python中ssh客戶端使用哪個包實現 我們這裡使用的是paramiko 第二個問題是怎麼連線伺服器 連線伺服器直接使用connect 函式就可以了,有個坑是不在known hosts檔案中的機器預設不允許連線需要處理一下 第三個問題是連上之後怎麼...

python3 paramiko實現ssh客戶端

pip install paramiko ssh客戶端實現主要有以下四個問題 第乙個問題是在python中ssh客戶端使用哪個包實現 我們這裡使用的是paramiko 第二個問題是怎麼連線伺服器 連線伺服器直接使用connect 函式就可以了,有個坑是不在known hosts檔案中的機器預設不允許...

python3 paramiko 巡檢網路裝置

用paramiko做網路裝置巡檢,發現大坑,就是show run這種看配置有多頁存在的沒法顯示第二頁,沒找到paramiko翻頁的地方,新增多個空格也不是很好使。避開這個坑,自動登入搞定了後面命令怎麼傳都是小事了,傳參參考第二個指令碼吧。cisco的全頁列印顯示配置資訊的命令 terminal le...