一、实验运行环境¶
1.1 主机操作系统¶
1.1.1 Window 10上运行Centos8(VMware虚拟机)¶
1.2 网络设备¶
1.2.1 Ensp模拟器上运行的华为三层交换机Quidway S5700-28C-HI¶
1.3 网络设备OS版本¶
1.3.1 华为IOS¶
1.4 Python版本¶
1.4.1 2¶
二、实验拓扑¶

三、实验所用地址¶
3.1 局域网IP段¶
3.1.1 0/24¶
3.2 运行Python的Centos主机¶
3.2.1 20/24¶
3.3 SW1¶
3.3.1 11/24¶
3.4 SW2¶
3.4.1 12/24¶
3.5 SW3¶
3.5.1 23/24¶
注意:实验环境必须要在同一网段,这里用不同地址代表不同网段
四、实验目的¶
4.1 通过Paramiko模块,分别登录交换机SW1、SW2、SW3,每台交换机分别创建vlan50,并添加描述信息Python_VLAN 50¶
五、实验步骤¶
5.1 每台交换机提前配好SSH,这里不做过多描述,如有需要请参考SSH配置实验¶
5.2 配置互联地址,并进行Ping测试,这里不做演示¶
5.3 建议提前手工远程登录交换机进行测试¶
5.4 先在虚拟机下载Python第三方模块Paramiko¶
5.4.1 执行命令'pip3.8 install paramiko',安装完成如下¶


没报错说明下载Paramiko模块成功
5.5 在虚拟机上创建地址列表文件¶
5.5.1 执行命令'vi ip_list.txt'进入文本模式¶
5.5.2 输入'i'进行编辑模式,具体内容如下¶

5.5.3 执行命令'chmod 777 ip_list.txt'赋予文本文件权限¶
5.6 在虚拟机上写Python脚本¶
5.6.1 执行命令'vi ips.py'进入文本模式¶
5.6.2 输入'i'进行编辑模式,具体脚本如下¶
#使用import语句导入paramiko模块、time模块和getpass模块
import paramiko
import time
#方便将getpass.getpass("password: ")简写成getpass("password: ")
from getpass import getpass
#使用input()函数以及getpass模块实现交互式输入用户名和密码
username = input("Username: ")
password = getpass("password: ")
#调用open()函数读取文本文件内容并将其赋值给变量f
f = open('ip_list.txt')
#一行一行读取文本内容并将其赋值给变量line
for line in f.readlines():
#将ip地址进行首尾空行处理
ip = line.strip()
#调用Paramiko的SSHClient()方法,将其赋值给变量ssh_client
ssh_client = paramiko.SSHClient()
#使用ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())来让Paramiko接受服务端提供的公钥
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#调用paramiko.SSHClient()的函数connect()进行SSH登录,look_for_keys=False用来解决避免Paramiko使用密钥来登录设备
ssh_client.connect(hostname=ip, username=username, password=password)
#打印提示信息
print("-------------------------------------------------")
print(f"Successfully connect to {ip}!")
#调用Paramiko的SSHClient()的invoke_shell()方法来唤醒shell,即设备命令行
command=ssh_client.invoke_shell()
#设置屏显长度为0
command.send('screen-length 0 temporary\n')
#进入系统视图
command.send("sys\n")
#创建vlan50
command.send("vlan 50\n")
#添加描述信息
command.send("des Python_VLAN 50\n")
#调用time模块下的sleep()函数手动让Python休眠1秒
time.sleep(1)
#返回用户视图并保存配置
command.send("return\n")
command.send("save\n")
command.send("y\n")
#调用time模块下的sleep()函数手动让Python休眠2秒
time.sleep(2)
#查看配置信息
command.send("dis vlan 50 verbose\n")
#调用time模块下的sleep()函数手动让Python休眠3秒
time.sleep(3)
#设置命令行最大回显内容数并将其赋值给变量output并用decode("ascii")将其解析为ASCII编码
output = command.recv(65535).decode("ascii")
print(output)
#关闭文本文件
f.close()
#使用close方法退出SSH
ssh_client.close()
5.6.3 按'esc'键退出文本模式,并执行命令':wq'保存文本内容并退出¶
5.6.4 执行命令'chmod +x ips.py'给脚本加可执行权限¶
5.6.4.1 切记:没有可执行权限不能执行脚本!!!¶
5.6.5 执行命令'python3.8 ips.py'来运行脚本,结果如下:¶



注:因内容太多,所以只截取部分
5.6.6 人工登入交换机执行命令'display vlan 50'核实配置情况,结果如下:¶


