通过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>版权协议,商业转载请联系作者获得授权,非商业转载请附上原文出处链接及本声明。