ssh客戶端實現主要有以下四個問題:
第乙個問題是在python中ssh客戶端使用哪個包實現----我們這裡使用的是paramiko
第二個問題是怎麼連線伺服器----連線伺服器直接使用connect()函式就可以了,有個坑是不在known_hosts檔案中的機器預設不允許連線需要處理一下
第三個問題是連上之後怎麼執行命令----連上之後直接用exec_command()函式就可以執行命令
第四個問題是怎麼讀取命令執行結果----exec_command()函式會返回函式執行結果,用乙個引數接收一下就可以了
我們這裡整個整序的流程是:
使用使用者名稱密碼登入主機----如果登入成功則執行whoami命令----列印whoami命令結果----退出ssh會話
importlogging
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)
(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...