代碼開始------------------------------------------------------------
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
from paramiko import SSHClient, AutoAddPolicy
import select
import re
?
host_list = [
? ? {'hostname': '192.168.174.130', 'port': 22, 'username': 'root', 'password': 'mana.2021'},
]? # 這是一個原始的主機信息列表;你也可以自己在代碼中添加,也可以遍歷excel進(jìn)行添加;
conn_deon = []? # 第一次驗證主機成功的主機列表
conn_fail = []? # 第一次驗證主機報錯的主機列表
conn_amend = []? # 修改端口后的主機列表;說明:修改端口的列表修改的是“第一次驗證失敗的列表【conn_fail】”
host_version_filtration = []? # 過濾符合版本的主機;擴展功能
no_host_version_filtration = []? # 過濾不符合版本的主機;擴展功能
?
?
def ssh_ex(hostname, port, username, password):
? ? '''
? ? 這是一個測試連接是否成功的函數(shù);
? ? 會將成功連接的主機傳入“conn_deon“列表;
? ? 將連接失敗的主機登錄信息追加到“conn_fail”列表
? ? :param hostname: 測試主機IP
? ? :param port: 測試主機端口
? ? :param username: 測試主機用戶名
? ? :param password: 測試主機密碼
? ? :return:
? ? '''
? ? ssh_client = SSHClient()? # 創(chuàng)建一個連接實例
? ? ssh_client.set_missing_host_key_policy(AutoAddPolicy)? # 自動處理SSH彈出的yes/no
? ? try:
? ? ? ? ssh_client.connect(hostname, port, username, password)? # 進(jìn)行SSH連接
? ? ? ? # 將成功連接的主機追加“conn_deon“列表
? ? ? ? conn_deon.append({'hostname': hostname, 'port': port,
? ? ? ? ? ? ? ? ? ? ? ? ? 'username': username, 'password': password})
? ? ? ? print('