在网络领域,日常巡检几百台交换机是一项常见且繁琐的任务。手动登录每台交换机执行命令不仅效率低下,还容易出错。借助 Python 编写自动化巡检脚本,能够极大地提高工作效率,减少人为错误。本文将详细介绍如何使用 Python 编写一个基于 SSH 协议的交换机巡检脚本,并支持通过文本文件批量管理交换机信息。
脚本实现思路
我们的目标是编写一个 Python 脚本,通过 SSH 协议连接到多台交换机,执行一系列巡检命令,并将结果输出。为了方便管理交换机信息,我们将使用文本文件存储每台交换机的 IP 地址、用户名、密码和特权模式密码。
脚本代码
import paramiko
import time
def read_switches_from_file(file_path):
switches = []
with open(file_path, 'r') as file:
for line in file:
ip, username, password, enable_password = line.strip().split(',')
switch = {
"ip": ip,
"username": username,
"password": password,
"enable_password": enable_password
}
switches.append(switch)
return switches
def inspect_switch(switch):
try:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=switch["ip"], username=switch["username"], password=switch["password"])
shell = ssh.invoke_shell()
shell.send("enable\n")
time.sleep(1)
shell.send(switch["enable_password"] + "\n")
time.sleep(1)
commands = [
"show version",
"show interfaces status",
"show running-config"
]
for command in commands:
shell.send(command + "\n")
time.sleep(2)
output = shell.recv(65535).decode("utf-8")
print(f"### Output for {command} on {switch['ip']} ###")
print(output)
ssh.close()
except Exception as e:
print(f"Error connecting to {switch['ip']}: {e}")
if __name__ == "__main__":
file_path = "switches.txt"
switches = read_switches_from_file(file_path)
for switch in switches:
inspect_switch(switch)代码解释
1. 导入必要的库:paramiko 用于 SSH 连接,time 用于在命令执行之间添加延迟,确保命令有足够的时间执行。
2. 读取交换机信息:read_switches_from_file 函数从指定的文本文件中读取每一行,将其分割为 IP 地址、用户名、密码和特权模式密码,并存储在一个字典列表中。
3. 巡检单个交换机:inspect_switch 函数接受一个交换机信息字典作为参数,通过 SSH 连接到交换机,进入特权模式,执行一系列巡检命令,并将结果输出。
4. 主程序:指定文本文件路径,调用 read_switches_from_file 函数读取交换机信息,然后遍历每个交换机,调用 inspect_switch 函数进行巡检。
文本文件格式
switches.txt 文件的格式如下:
192.168.1.1,admin,password,enable_password
192.168.1.2,admin2,password2,enable_password2每行代表一台交换机的信息,各字段之间用逗号分隔。
修改和添加方法
要修改或添加交换机信息,只需编辑 switches.txt 文件,添加或修改相应的行即可。这种方式使得批量管理交换机信息变得非常方便。
注意事项
• 库的安装:请确保已经安装了 paramiko 库,可以使用 pip install paramiko 进行安装。
• 命令适配:不同品牌和型号的交换机可能需要不同的命令和配置,请根据实际情况修改 commands 列表中的命令。
• 协议支持:如果交换机不支持 SSH 连接,需要使用其他协议(如 Telnet),则需要使用相应的库进行连接。
总结
通过本文介绍的 Python 脚本,你可以轻松实现交换机的批量巡检,提高工作效率。同时,使用文本文件管理交换机信息,使得信息的修改和添加变得简单直观。希望这个脚本能够帮助你更好地完成网络巡检工作。
更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。
想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!