3、连接多机 - 图1

实验拓扑:

【SSH 客户端】Win10 虚拟网卡,IP 为 192.168.242.2/24,桥接到云彩,Python所在。
【透明交换机】SW1(启动即可,无需配置,给云彩扩展端口使用)。
【SSH 操作对象】Layer3Switch-x,IP为 192.168.242.1x/24。3、连接多机 - 图2

实验背景:

现网如果只有一台设备,那我们还讨论啥运维自动化哈?咱们把整台设备的配置文件都背下来就行了。事实上,稍微大一点的企业,网络设备量都是几百上千的。前面的实验,我们都是通过netmiko登录1台设备,这次我们来用netmiko模块操作多台设备,顺便串一下以前paramiko模块实验中用到的“循环遍历、读取文件、异常处理”等,当做温故而知新吧。
实验目的:
(1)用netmiko登录各台LSW,执行display cur | inc sysname命令,抓取回显。
(2)用netmiko处理“网络不通”,“认证失败”2个模拟场景。

实验准备及检查:

(1)完成实验拓扑组网,完成管理 IP 配置,账号配置。我们把LSW3的密码从“123”改成“456”,模拟认证失败的场景。
3、连接多机 - 图3
(2)实验拓扑网络打通,在 PC 端可手工 ping 通设备,登录设备,执行命令。我们把设备列表中的LSW5机器关闭,模拟网络不通。
3、连接多机 - 图4
3、连接多机 - 图5
(3)display arp xxx,ping 地址等操作,这里从略。如遇到网络不通,则排障处理。(公众号:释然IT杂谈)

Python代码:

这个实验我还重点把一些早前学习的知识串一下。

  1. import netmiko
  2. from netmiko import ConnectHandler
  3. # 存放认证失败的设备信息
  4. switch_with_authentication_issue = []
  5. # 存放网络不通的设备信息
  6. switch_not_reachable = []
  7. with open('ip_list.txt') as f:
  8. for ips in f.readlines():
  9. try:
  10. ip = ips.strip()
  11. connection_info = {
  12. 'device_type': 'huawei',
  13. 'ip': ip,
  14. 'username': 'python',
  15. 'password': '123',
  16. #'conn_timeout':10
  17. }
  18. with ConnectHandler(**connection_info) as conn:
  19. print (f'已经成功登陆交换机{ip}')
  20. output = conn.send_command('display cur | inc sysname')
  21. print(output)
  22. except netmiko.NetmikoAuthenticationException:
  23. print(ip + "用户验证失败!")
  24. switch_with_authentication_issue.append(ip)
  25. except netmiko.ssh_exception.NetmikoTimeoutException:
  26. print(ip + "目标不可达!")
  27. switch_not_reachable.append(ip)
  28. # 公众号释然IT杂谈
  29. print('\n ====结果输出====')
  30. print('·下列交换机用户验证失败:')
  31. for i in switch_with_authentication_issue:
  32. print(f" {i}")
  33. # 公众号:释然IT杂谈
  34. print('·下列交换机不可达:')
  35. for i in switch_not_reachable:
  36. print(f" {i}")

3、连接多机 - 图6
执行脚本及结果:
好了,跑起来,都是符合我们预期的,常试截在一张图吧,大家试试看吧。
3、连接多机 - 图7

实验小结:

(1)这次我们借netmiko模块操作多台设备的机会,顺便串一下以前paramiko模块实验中用到的“循环遍历、读取文件、异常处理”等,当做温故而知新吧。至于try-except中要except什么值呢?我是用IDLE命令好模式一个一个测出来的。
(2)实验这么久,今天发现如果ip_list.txt文件的末位有空白行的话,跑码会出错。算是我自己的“温故而知新”项吧。
3、连接多机 - 图8