平台工具:
- 实验平台:WIN10
- 使用工具:eNSP v1.3.00.100、python 3.7.3
注意:
1、eNSP 模拟器目前官方暂时下架了,网上不难找,据说官方在开发新的更强大的版本ing。
2、Python 用 3.9 还是 3.7 的关系不大。
3、如果我们从零开始的话,就先不用什么集成开发环境,先用 Python 自带的编辑器,从最简单的开启,一点一点慢慢积累沉淀。
实验拓扑:
【SSH 客户端】Win10 虚拟网卡,IP 为 192.168.242.1/24,桥接到云彩,Python所在。 【透明交换机】SW1(启动即可,无需配置,给云彩扩展端口使用)。
【SSH 服务端】LSW x,IP为 192.168.242.1x/24,连接到透明交换机SW1。
(注:《网络工程师的Python之路》书中用的是192.168.2.0/24 网段,在书中这个实验叫【实验1】,大神的专栏及视频中叫【实验2】,有强迫症的童鞋别介意= =)
实验目的:
配合 getpass 模块和 input() 函数实现交互式的 SSH 用户名和密码输入。
配合 for loop 同时给 5 台交换机配置 VLAN 10 至 20 。
实验环境配置
按照拓扑,每台交换机 vlan 1 都配置 vlanif 的 IP 作为管理。(附 LSW-1 的配置,如 LSW2 则仅为将 192.168.242.11 改为 192.168.242.12,这里从简。)
sysname LSW1
aaa
# 密码明文 123
local-user python password cipher #C>$C`S!INZPO3JBXBHA!!
local-user python privilege level 3
local-user python service-type ssh
interface Vlanif1 ip address 192.168.11.11 255.255.255.0
stelnet server enable
# 下面这条很关键,我一开始没配置这条,一直 ssh 反馈有错误。# 模拟器的产品手册说这条是默认值,但测试后需要手动配置。
ssh authentication-type default password
user-interface vty 0 4
authentication-mode aaa
protocol inbound ssh
实验前检查
检查网络连通性(PC ping 测 192.168.242.11-15),打开 cmd,执行 ping 192.168.242.11。
Python 代码
代码讲解,大神在书里和专栏中已逐条做了解释,我做的主要目标是把大神的 linux+思科设备,转成 windows + 华为设备。
#import 导包
import paramiko
import time
import getpass
#定义两个字符串变量
username = input("Username: ")
password = getpass.getpass("Password: ")
for i in range(11,16):
ip = '192.168.242.' + str(i)
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('已经成功登陆交换机 Layer3Switch-' + str(i-10) + ' ' + ip)
# 关闭分屏功能
command.send('screen-length 0 temporary\n')
# 进入系统视图
command.send('sys\n')
for i in range(11,16):
print('正在创建 VLAN :' + str(i))
command.send('vlan ' + str(i) + '\n')
time.sleep(1)
command.send('desc Python_Vlan' + str(i) + '\n')
time.sleep(0.5)
command.send('return\n')
command.send('save\n')
command.send('Y\n')
time.sleep(2)
output = command.recv(65535).decode('ASCII')
print(output)
ssh_client.close()
执行脚本:
好了,代码执行完成回显,如上图显示。
实验结果检测
之后我们可以去每台 LSW 检查 VLAN 信息,查看是否自动建立好了,来验证 python 脚本的操作。
在此以LSW1为例查看效果。
实验小结
怎样?能实现脚本下发自动配置,比手工敲指令是不是效率高很多。哈哈。但实际现网生产环境目前来看比较难随意部署这些玩意(安全原因)。不过这丝毫不影响咱们做实验和学习技能呀。
在实验过程中,python 脚本建 vlan ,然后咱们要重复实验,就得手工把 vlan 都删掉,25个vlan 操作有点累哈,其实同样可以写个脚本把 建的 VLAN 给删除掉。我已经写了,代码我就不贴上来了哈,要不您试试看?
在LSW1查看VLAN是否还存在: