通过SSH连接批量查询交换机信息
# 导入paramiko模块,用于ssh连接
import paramiko
# 定义一个函数,用于执行ssh命令,并返回输出结果
def ssh_command(ip, port, username, password, command):
# 创建一个ssh客户端对象
ssh = paramiko.SSHClient()
# 设置自动添加主机密钥
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 定义一个超时时间,单位为秒
timeout = 10
try:
# 连接到目标主机,设置端口和超时时间
ssh.connect(ip, port=port, username=username, password=password, timeout=timeout)
# 执行命令,并获取标准输出和错误输出
stdin, stdout, stderr = ssh.exec_command(command)
# 读取输出结果
output = stdout.read().decode()
# 关闭连接
ssh.close()
# 返回输出结果
return output
except paramiko.ssh_exception.SSHException as e:
# 如果发生SSH异常,打印错误信息,并返回空字符串
print(f"SSH error: {e}")
return ""
except Exception as e:
# 如果发生其他异常,打印错误信息,并返回空字符串
print(f"Other error: {e}")
return ""
# 定义一个列表,存储所有该型号交换机的ip地址,端口,用户名和密码
switches = [
{"ip": "192.168.1.1", "port": 22, "username": "admin", "password": "admin"},
{"ip": "192.168.1.2", "port": 22, "username": "admin", "password": "admin"},
{"ip": "192.168.1.3", "port": 2222, "username": "admin", "password": "admin"},
]
# 定义一个列表,存储要执行的命令
commands = [
"display cpu summary",
"display memory summary",
]
# 遍历每个交换机
for switch in switches:
# 打印交换机的ip地址和端口
print(f"Switch IP: {switch['ip']}, Port: {switch['port']}")
# 遍历每个命令
for command in commands:
# 打印命令
print(f"Command: {command}")
# 调用ssh_command函数,执行命令,并获取输出结果
output = ssh_command(switch['ip'], switch['port'], switch['username'], switch['password'], command)
# 打印输出结果
print(output)
# 打印分隔符
print("-" * 40)
作者:wanghongwei
版权声明:本作品遵循<CC BY-NC-ND 4.0>版权协议,商业转载请联系作者获得授权,非商业转载请附上原文出处链接及本声明。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统