实验拓扑
【SSH 客户端】Win10 虚拟网卡,IP 为 192.168.11.2/24,桥接到云彩,Python所在。
【透明交换机】SW1(启动即可,无需配置,给云彩扩展端口使用)。
【SSH 服务端】L3Sx,IP为 192.168.11.1x/24,连接到透明交换机SW1,本次实验特意把 L3S5 的管理 IP 修改为 192.168.11.55/24。
实验目的
1、在生产环境中,交换机的管理 IP 基本不可能像实验环境中这样 11 到 15,有些交换机的管理 IP 甚至在不同的网段,这种情况下,我们就不能简单的用 for loop 来循环 IP 地址的最后一段来登录交换机。这里我们要额外开一个文本文件,把我们需要登录的交换机 IP 全部写进去,然后用 for loop 配合 open() 函数来批量登录所有交换机。(抄书的哈)
2、用上面的方法登录所有交换机,把华为交换机默认的 MSTP 修改成 STP。(书及视频中,是“开启 EIGRP”,EIGRP 是思科设备才有,咱们是华为,然后咱们是交换机,那来个 STP 吧。)
准备条件
1、实验拓扑中,L3S5 的管理地址从 192.168.2.15 改成 192.168.2.55(见实验拓扑图)。
2、创建一个名为 ip_list.txt 的文件,把 L3S1 到 L3S5 交换机的管理 IP 地址放进去。
实验环境配置
按照拓扑,每台交换机 vlan 1 都配置 vlanif 的 IP 作为管理。(附 L3S1 的配置,如 L3S2 则仅为将 192.168.11.11 改为 192.168.11.12,这里从简。特别注意: L3S5 的 IP 是 192.168.11.55。)
sysname L3SW1 aaa local-user python password cipher 123 interface Vlanif1 stelnet server enable user-interface con 0 |
实验前检查
1、按之前实验套路,对 L3S1 到 L3S5 逐一检查 PC 到L3S1 到 L3S5 的网络连通性,如不通需要排网络,本文此处描述从简。
2、检查 L3S1 到 L3S5 当前的 STP 模式,命令如下, inc 后为关键字匹配,其实也可以匹配 -------,这个大家随意发挥,能找出来"MSTP"就好。
Python 代码
代码
@弈心
大神在专栏和书中都逐条做了详细解释,如需要请移步阅读,我将其代码中的思科指令修改成华为指令。代码中一些我自己的理解
import time
import getpass
username = input("Username: ")
password = getpass.getpass("Password: ")
此时 ssh_paramiko_hw3.txt 需要与 lab3.py 在相同的文件夹中
f = open('ip_list.txt')
for line in f.readlines():
ip = line.strip()
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=ip, username=username,
password=password, look_for_keys=False)
command = ssh_client.invoke_shell()
print('=-=-=-=-=-=-=-=-=-=-=-=-=-=')
print('已经成功登陆交换机 L3S' + ip)
# 关闭分屏功能
command.send('screen-length 0 temporary\n')
# 进入系统视图
command.send('sys\n')
# 关闭消息通知(防止log信息刷屏)
command.send('undo info-center enable\n')
# 将交换机默认的 mstp 修改为 stp
command.send('stp mode stp\n')
time.sleep(2)
# 返回用户视图
command.send('return\n')
# 执行保存
command.send('save\n')
command.send('Y\n')
time.sleep(2)
output = command.recv(65535).decode('ASCII')
print(output)
f.close()
ssh_client.close()
实验过程
实验2,我们已经发现 Windows 系统上跑 getpass.getpass() ,不能直接在 IDLE 上跑,否则密钥会明文显示出来。当时也提了 2 个处理方法,考虑到我们等下要回滚看信息和截图,我们不用目录中双击 lab3脚本文件 而是从 CMD 上进入目录执行。
实验结果检查
检查 L3S1 到 L3S5 当前的 STP 模式,命令如下, inc 后为关键字匹配,其实也可以匹配 -------,这个大家随意发挥,能找出来"STP"就好。
display stp | inc CIST Global Info
display stp | inc -------