首先,确保你的计算机上安装了Python环境,并且已经下载了paramiko模块。paramiko是一个Python实现的SSH2协议,支持认证及运行远程命令。
接下来,将你的虚拟云接入到需要进行巡检的网络中,并将虚拟云的虚拟网卡与你的主机连接。这一步是为了确保虚拟云能够与网络内的设备进行通信。
在网络配置方面,你需要设置一个VLAN,例如VLAN 10,并确保网络中的每个设备都配置了VLAN 10的地址。这样做可以解决设备之间的连通性问题。具体来说,你需要确保192.168.200.1这个地址与巡检设备处于同一个网络段。
解决了连通问题之后,还需要配置每个设备的远程登录权限。这通常包括生成密钥对、设置登录口令、启用SSH服务端功能等步骤。以下是一个示例配置过程:
```bash user-interface vty 0 4 # 进入虚拟终端 authentication-mode aaa # 配置口令模式 protocol inbound ssh # 允许SSH协议 quit
aaa local-user huawei password cipher hw@123 # 创建本地用户并设置密码 local-user huawei privilege level 15 # 设置用户权限 local-user huawei service-type ssh # 设置用户服务类型 quit
ssh user huawei authentication-type password # 创建SSH用户并指定登录验证方式 ssh user huawei service-type Telnet # 设置SSH用户服务类型 stelnet server enable # 启用设备SSH服务 ```
在确保所有设备都配置完成后,可以使用xshell或其他SSH客户端测试远程登录是否成功。
现在,我们来编写一个Python脚本来实现自动化巡检。脚本的核心是使用paramiko模块建立SSH连接,并执行一系列巡检命令。以下是一个简单的脚本示例:
```python import paramiko import time
log_time = time.strftime("%Y-%m-%d%H:%M:%S", time.localtime()) user = input("username: ") password = input("password: ") with open("ip.txt", "r") as f: for line in f.readlines(): ip = line.strip() ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(hostname=ip, username=user, password=password) print(log_time + "成功连接交换机,开始巡检" + ip) command = ssh.invoke_shell() command.send("system\n") command.send("display ip routing-table\n") command.send("display device\n") command.send("display environment\n") command.send("display alarm urgent\n") command.send("display memory-usage\n") command.send("display version\n") command.send("display fan\n") with open("check.txt", "a") as output_file: time.sleep(2) output = command.recv(65535) result = output.decode("ascii") output_file.write(result) print(result) ssh.close() ```
在这个脚本中,`ip.txt`文件包含了所有需要巡检的设备的ip地址,而`check.txt`文件则用于记录巡检结果。脚本会逐一连接到这些IP地址,执行预设的巡检命令,并将结果记录到`check.txt`文件中。
通过这样的步骤,我们就可以实现一个简单的网络设备自动化巡检系统,提高网络管理的效率和可靠性。
一,实现这个功能的前提:
- 拥有python环境
- 下载paramiko模块
二,将虚拟云接入到要实现巡检的网络内,将虚拟云连接自己主机的虚拟网卡。



根据上面的三张图:
192.168.200.1 这个地址需要跟巡检的设备连通
那么在网络内设置vlan 10,并在每个设备内都设置一个vlan10的地址
解决了连通问题后,
我们还要配置设备的远程登录(每个设备都要):
dsa local-key-pair create//先根据加密算法生成秘钥对,用于传输数据时加密保护,保存在交换机中但不保存在配置文件中
2048//#设置密钥位数
客户端登陆SSH server服务端后自动获得分配钥匙
user-interfacevty04//进入虚拟终端
authentication-modeaaa//配置口令模式
protocolinboundssh
quit
aaa
local-userhuaweipasswordcipherhw@123
local-userhuaweiprivilegelevel15
local-userhuaweiservice-typessh//当通过password、password-dsa、passowrd-rsa认证时,需要在AAA视图下创建同名本地用户,并设置其服务类型和级别
quit
sshuserhuaweiauthentication-typepassword//创建SSH用户并指定其登陆验证方式
sshuserhuaweiservice-typestelnet//设置SSH用户服务类型
stelnetserverenable//打开设备SSH(stelnet)服务端功能
之后最好用xshell或其他尝试下远程登录是否成功。
三,写python脚本
importparamiko
importtime
log\_time=time.strftime("\%Y-\%m-\%d\%H:\%M:\%S",time.localtime())
user=input("username:")
password=input("password:")
f=open("ip.txt","r")
forlineinf.readlines():
ip=line.strip()
ssh=paramiko.SSHClient()
ssh.set\_missing\_host\_key\_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=ip,username=user,password=password)//ssh远程登录
print(log\_time+"成功连接交换机,开始巡检"+ip)
command=ssh.invoke\_shell()//用于创建一个子shell进程
command.send("system\n")
command.send("displayiprouting-table\n")
command.send("displaydevice\n")
command.send("displayenvironment\n")
command.send("displayalarmurgen\n")
command.send("displaymemory-usage\n")
command.send("displayversion\n")
command.send("displayfan\n")
f=open("check.txt","a")//这a代表写入,不能用w,w是直接叠加会将之前写入的数据清理。
time.sleep(2)
output=command.recv(65535)//返回结果字符为65535
result=output.decode("ascii")
f.write(result)
print(result)
f.close()
ssh.close()
这里的ip.txt
中每一行写入要巡检设备的ip地址
check.txt是一个空白文件,给程序写入结果数据。