利用python实现批量登录网络设备
- 实现ensp与物理机互通
-
- [ensp 配置](#ensp 配置)
- 配置网络设备远程登录
- 用python实现批量登录
通过阅读本文可以学习自动化运维相关知识,本文章代码可以直接使用,通过批量登录功能后,可以按照自己意愿进行功能更改与完善。
实现ensp与物理机互通
ensp 配置
利用华为ensp模拟器提供的cloud功能实现与物理机互通,如图所示
选择其他设备-->cloud,拖到拓扑图中后选中cloud图标,右键选择设置选项,即可看到cloud配置界面
选择绑定信息下拉框,即可看到物理机的网卡情况,在此利用虚拟网卡进行桥接
PS:如果下拉框无虚拟网卡选项可以重新安装VirtualBox虚拟机,并重启物理机,或者可以通过计算机管理-->网络适配器-->添加过时硬件-->下一步-->安装我手动从列表中选择的硬件-->网络适配器-->Microsoft KM-TEST 环回适配器-->一直点击下一步确定即可,添加环回口适配器来进行与物理机通信,完成后记得重启物理机,否则cloud中没有此网卡选项
当虚拟网卡或者环回适配器配置好后,就可以设置cloud,其中要点为
1、添加两个端口,一个为UDP,一个为虚拟网卡或者环回适配器网卡
2、添加端口映射,其中需要增加双向通道
3、配置网络设备和所选择的网卡在同一网段
4、在物理机和ensp网络设备上测试是否可以互通
配置网络设备远程登录
可参考以上文档方法配置网络设备远程登录
用python实现批量登录
安装好对应程序,并下载paramiko包
python
import paramiko
def ssh_connect(ip):
ssh = paramiko.SSHClient() #创建SSH登录实例
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #自动保存公钥
ssh.connect(hostname=ip,port=22,username="admin",password="admin123") #输入网络设备登录所需信息
cli=ssh.invoke_shell() #将结果回显
cli.send("dis fan\n") #查看风扇情况
cli.send("dis device\n") #查看硬件情况,可以根据需要添加
res = cli.recv(9999).decode('utf-8') #字符转换为utf-8格式
print(res)
ssh.close()
data_list=["192.168.56.{}".format(i) for i in range(2,4)] #根据所登录ip地址网段不同来进行更改,其中range(2,4)代表的是2和3,即左闭区间,右开区间
for i in data_list: #利用for循环来进行批量操作
ssh_connect(i)
执行成功结果
常见问题
python
in ssh_connect
ssh.connect(hostname=ip,port=22,username="admin",password="admin123")
出现此提示可能有两种情况
1、物理机和ensp网络设备网络不可达
2、ensp网络设备无法远程登录
python
ssh_connect(i)
^
IndentationError: expected an indented block after 'for' statement on line 26
出现此提示可能原因为:
未按照语法规则进行编译,此时可查看空格是否正确