平台工具:

  • 实验平台:WIN10
  • 使用工具:eNSP v1.3.00.100、python 3.7.3

实验拓扑:

注意:
书中使用了 192.168.2.0/24 ,我这里才有eve桥接的虚拟网段192.168.242.0/24来演示本次实验。

【SSH 服务端】LSW x,IP为 192.168.242.1x/24,连接到透明交换机SW1。

3、读取文件 - 图1

实验目的:

1、在生产环境中,交换机的管理 IP 基本不可能像实验环境中这样 11 到 15,有些交换机的管理 IP 甚至在不同的网段,这种情况下,我们就不能简单的用 for loop 来循环 IP 地址的最后一段来登录交换机。这里我们要额外开一个文本文件,把我们需要登录的交换机 IP 全部写进去,然后用 for loop 配合 open() 函数来批量登录所有交换机。(抄书的哈)
2、用上面的方法登录所有交换机,把华为交换机默认的 MSTP 修改成 STP。

准备条件:

1、实验拓扑中,LSW5 的管理地址从 192.168.242.15 改成 192.168.242.55(见实验拓扑图)。
2、创建一个名为 ip_list.txt 的文件,把 LSW1 到 LSW5 交换机的管理 IP 地址放进去。
3、创建一个名为commnd_list.txt的文件,放置需要配置的命令。
3、读取文件 - 图2

实验环境配置

按照拓扑,每台交换机 vlan 1 都配置 vlanif 的 IP 作为管理。(附 LSW1 的配置,如 LSW2 则仅为将 192.168.242.11 改为 192.168.242.12,这里从简。)特别注意:LSW5 的 IP 是 192.168.242.55。)

  1. sysname LSW1
  2. aaa
  3. # 密码明文 123
  4. local-user python password cipher #*C>*$C`S!INZPO3JBXBHA!!
  5. local-user python privilege level 3
  6. local-user python service-type ssh
  7. interface Vlanif1
  8. ip address 192.168.11.11 255.255.255.0
  9. stelnet server enable
  10. # 下面这条很关键,我一开始没配置这条,一直 ssh 反馈有错误。
  11. # 模拟器的产品手册说这条是默认值,但测试后需要手动配置。
  12. ssh authentication-type default password
  13. user-interface vty 0 4
  14. authentication-mode aaa
  15. protocol inbound ssh

3、读取文件 - 图3

实验前检查

1、按之前实验套路,对 LSW1 到 LSW5 逐一检查 PC 到 LSW1 至 LSW5 的网络连通性,如不通需要排网络,本文此处描述从简。
2、检查 LSW1 至 LSW5 当前的 STP 模式,命令如下, inc 后为关键字匹配,其实也可以匹配 ———-,这个大家随意发挥,能找出来”MSTP”就好。
3、读取文件 - 图4
更多精彩内容关注“释然IT杂谈”

Python 代码

代码讲解,大神在书里和专栏中已逐条做了解释

  1. import paramiko
  2. import time
  3. import getpass
  4. username = input("Username: ")
  5. password = getpass.getpass("Password: ")
  6. # 此时 ip_list.txt 需要与 lab3.py 在相同的文件夹中
  7. f = open('ip_list.txt')
  8. for line in f.readlines():
  9. ip = line.strip()
  10. ssh_client = paramiko.SSHClient()
  11. ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  12. ssh_client.connect(hostname=ip,username=username,
  13. password=password,look_for_keys=False)
  14. command = ssh_client.invoke_shell()
  15. print('=-=-=-=-=-=-=-=-=-=-=-=-=-=')
  16. print('已经成功登陆交换机 LSW-' + ip)
  17. l = open('commnd_list.txt','r')
  18. l.seek(0)
  19. for line in l.readlines():
  20. comm = line.strip()
  21. command.send(comm + '\n')
  22. time.sleep(2)
  23. output = command.recv(65535).decode('ASCII')
  24. print(output)
  25. ssh_client.close()

3、读取文件 - 图5

执行脚本文件:

3、读取文件 - 图6
好了,代码执行完成回显,如上图显示。

实验结果检测
检查 LSW1 至 LSW5 当前的 STP 模式,命令如下, inc 后为关键字匹配,其实也可以匹配 ———-,这个大家随意发挥,能找出来”STP”就好。以LSW1为例查看。
3、读取文件 - 图7

实验小结

本实验主要实现脚本调去外部文件,来实现所需功能的配置。