ssh客戶端實現主要有以下四個問題:
第乙個問題是在python中ssh客戶端使用哪個包實現----我們這裡使用的是paramiko
第二個問題是怎麼連線伺服器----連線伺服器直接使用connect()函式就可以了,有個坑是不在known_hosts檔案中的機器預設不允許連線需要處理一下
第三個問題是連上之後怎麼執行命令----連上之後直接用exec_command()函式就可以執行命令
第四個問題是怎麼讀取命令執行結果----exec_command()函式會返回函式執行結果,用乙個引數接收一下就可以了
我們這裡整個整序的流程是:
使用使用者名稱密碼登入主機----如果登入成功則執行whoami命令----列印whoami命令結果----退出ssh會話
import logging
import sys
from paramiko import authenticationexception
from paramiko.client import sshclient, autoaddpolicy
from paramiko.ssh_exception import novalidconnectionserror
class mysshclient():
def __init__(self):
self.ssh_client = sshclient()
# 此函式用於輸入使用者名稱密碼登入主機
def ssh_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引數中的命令並列印命令執行結果
def execute_some_command(self,command):
stdin, stdout, stderr = self.ssh_client.exec_command(command)
print(stdout.read().decode())
# 此函式用於退出登入
def ssh_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...