各位兄弟,以前写过一个用python连接h3c交换机,并执行h3c交换机命令的程序,今天来分享一个连接多个h3c交换机,并用多线程同步执行的例子,这也是我们做IT运维需要学习的,咱也不多说了,接下来就可以实际操作下,首先我们来配置交换机:首先我们创建一个可以通过SSH连接的账户,如下图:多个h3c交换机是类似的配置,这样我们交换机就配置完毕了。import netmiko
from netmiko import ConnectHandler
from concurrent.futures import ThreadPoolExecutor
# -------------------------- 在这里修改你的交换机列表 --------------------------
switch_list = [
{
'device_type': 'hp_comware',
'host': '10.0.0.21',
'port': 22,
'username': 'admin',
'password': 'shunfaxinxi@123',
},
{
'device_type': 'hp_comware',
'host': '10.0.0.9',
'port': 22,
'username': 'admin',
'password': 'shunfaxinxi@123',
},
{
'device_type': 'hp_comware',
'host': '10.0.0.20',
'port': 22,
'username': 'admin',
'password': 'shunfaxinxi@123',
},
{
'device_type': 'hp_comware',
'host': '10.0.0.27',
'port': 22,
'username': 'admin',
'password': 'shunfaxinxi@123',
},
]
# 要批量执行的命令
commands = ['dis cpu', 'dis memory']
# -------------------------- 批量执行函数 --------------------------
def run_command_on_switch(switch):
ip = switch['host']
print(f"\n==== 正在连接交换机:{ip} ====")
try:
# 连接
net_connect = ConnectHandler(**switch)
result = f"\n{'=' * 50}\n交换机 {ip} 执行结果\n{'=' * 50}\n"
# 逐条执行命令
for cmd in commands:
output = net_connect.send_command(cmd)
result += f"\n【命令】: {cmd}\n{output}\n"
net_connect.disconnect()
return result
except Exception as e:
return f"\n==== 交换机 {ip} 连接失败:{str(e)} ===="
# -------------------------- 多线程同时执行 --------------------------
if __name__ == "__main__":
print("==== 开始批量执行交换机命令 ====")
# 同时连接5台(可改)
with ThreadPoolExecutor(max_workers=5) as executor:
all_results = executor.map(run_command_on_switch, switch_list)
# 打印所有结果
for res in all_results:
print(res)
:\python\pythonProject3\.venv\Scripts\python.exe D:\python\pythonProject3\巡检多交换机.py
==== 开始批量执行交换机命令 ====
==== 正在连接交换机:10.0.0.21 ====
==== 正在连接交换机:10.0.0.9 ====
==== 正在连接交换机:10.0.0.20 ====
==== 正在连接交换机:10.0.0.27 ====
==================================================
交换机 10.0.0.21 执行结果
==================================================
【命令】: dis cpu
Slot 1 CPU 0 CPU usage:
40% in last 5 seconds
5% in last 1 minute
5% in last 5 minutes
【命令】: dis memory
Memory statistics are measured in KB:
Slot 1:
Total Used Free Shared Buffers Cached FreeRatio
Mem: 506440 301704 204736 0 2372 112844 43.4%
-/+ Buffers/Cache: 186488 319952
Swap: 0 0 0
==================================================
交换机 10.0.0.9 执行结果
==================================================
【命令】: dis cpu
Slot 1 CPU 0 CPU usage:
27% in last 5 seconds
7% in last 1 minute
8% in last 5 minutes
【命令】: dis memory
Memory statistics are measured in KB:
Slot 1:
Total Used Free Shared Buffers Cached FreeRatio
Mem: 506408 340692 165716 0 3564 129296 36.3%
-/+ Buffers/Cache: 207832 298576
Swap: 0 0 0
==================================================
交换机 10.0.0.20 执行结果
==================================================
【命令】: dis cpu
Slot 1 CPU 0 CPU usage:
12% in last 5 seconds
7% in last 1 minute
7% in last 5 minutes
【命令】: dis memory
Memory statistics are measured in KB:
Slot 1:
Total Used Free Shared Buffers Cached FreeRatio
Mem: 506440 298904 207536 0 2832 114468 44.3%
-/+ Buffers/Cache: 181604 324836
Swap: 0 0 0
==================================================
交换机 10.0.0.27 执行结果
==================================================
【命令】: dis cpu
Slot 1 CPU 0 CPU usage:
16% in last 5 seconds
7% in last 1 minute
8% in last 5 minutes
【命令】: dis memory
Memory statistics are measured in KB:
Slot 1:
Total Used Free Shared Buffers Cached FreeRatio
Mem: 506408 340676 165732 0 2512 127884 35.8%
-/+ Buffers/Cache: 210280 296128
Swap: 0 0 0
ok,执行成功,这样巡检是不是很方便呢,程序先搞出来,以后慢慢优化吧!今天就先分享到这里了。