本实验通过paramiko模块的SSH函数,我们可以实现远程批量管理交换机、Linux主机等。本实验是通过paramiko、pandas、openpyxl模块,实现快速巡检交换机VLAN,并导出VLAN ip地址。
import paramiko
import pandas as pd
from openpyxl.workbook import workbook
import time
# 连接信息
host = '192.168.1.1'
port = 22
username = 'admin'
password = 'admin'
# 建立 SSH 连接
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=host, port=port, username=username, password=password)
print("已成功登录交换机",host)
# 执行 display ip inter brief 命令
# 返回了三个数据,第1个是输入命令,第2个是命令返回的结果,第3个是命令错误时返回的结果
stdin, stdout, stderr = ssh.exec_command('display ip inter brief')
time.sleep(5)
#print(stdout.read().decode('utf-8')) 调试使用
# 读取命令执行结果,
# readlines()读取所有行并返回列表,方便for in 处理
output = stdout.readlines()
print(output)
# 解析 VLAN 信息中的 IP 地址
vlan_ips = []
for line in output:
if 'Vlanif' in line:
vlan_id = line.split()[0]
vlan_ip = line.split()[1]
vlan_ips.append({'VLAN ID': vlan_id, 'IP Address': vlan_ip})
# 将 IP 地址输出到 Excel 文件中
df = pd.DataFrame(vlan_ips)
writer = pd.ExcelWriter('vlan_ips.xlsx')
df.to_excel(writer, index=False)
writer.save()
# 关闭 SSH 连接
ssh.close()