當(dāng)前位置:首頁 > IT技術(shù) > 編程語言 > 正文

python實現(xiàn)批量操作主機(自己可以選擇交互式和非交互式兩種)
2022-04-19 11:10:32

代碼開始------------------------------------------------------------

#!/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('