eNSP安装
eNSP的安装过程省略,才接触eNSP时,安装会遇到许多问题,这里给出我目前能够正常使用的相关软件版本:
- eNSP 1.3.00.100 V100R003C00 SPC100 (目前eNSP官网已经不再进行更新)
- VirtualBox Version 5.2.40 r137108
- Npcap 1.10
- WinPcap 4.1.3
eNSP第一次新建拓扑前,记得先注册设备:
- 右上角找到“菜单‘,然后选中”工具“,单击”注册设备“
- 勾选所有设备,然后点击”注册“
使用VirtualBox安装自动化Ubuntu 18.04 | 20.04
- 打开VirtualBox,在右上角单击”New“
- 分配内存大小 — 根据电脑配置,为虚拟机分配内存,1G或2G都行(当然笔者宿主机内存较大,选择了4G),然后Next继续
- 选择VM,选中”Create a virtual hard disk now“,单击”Create“
- 后面的几步都选择默认勾选 — ”VDI“ + ”Dynamic allocated“
- 分配存储大小,建议配置15G左右,分配太小可能会无法安装,单击”Create“后退回到主界面
- 这时选中你刚创建的ubuntu主机,然后单击上方菜单的”Start“运行
- 此时弹出运行界面,你需要选择你要安装的镜像的路径
- 后续就会进入ubuntu的安装步骤(此处省略ubuntu后续安装步骤)
配置Ubuntu远程客户端
这里以ubuntu 18.04为例
-
重新设置ubuntu 18.04的国内镜像源并刷新列表进行更新
-
安装Python和相关依赖
apt-get install python -y apt-get install build-essential libssl-dev libffi-dev -y apt-get install python-pip -y apt-get install python3-pip -y -
安装paramiko和netmiko
pip install cryptography pip install paramiko pip install netmiko pip3 install paramiko pip3 install netmiko
使用Telnet来配置S3700
- 设置Cloud
端口增加完成后,在端口映射入端口和出端口选择不同端口(顺序不影响),然后勾选双向通道,单击”增加“,此时端口映射表会增加一对端口。
-
Cloud设置完毕后,Cloud可以与SW1进行连接了,下图为测试拓扑
-
在SW1上配置telnet用户与密码(默认开启telnet)
aaa local-user sht1 password cipher Huawei local-user sht1 privilege level 15 local-user sht1 service-type telnet # interface Vlanif1 ip address 192.168.50.1 255.255.255.0 # user-interface vty 0 4 authentication-mode aaa user privilege level 15 protocol inbound all -
在Ubuntu 18.04上配置telent01.py脚本用于批量创建vlan
-
Python 3.6 脚本测试
#!/usr/bin/env python3 import getpass import telnetlib HOST = "192.168.50.1" user = "sht1" password = getpass.getpass() tn = telnetlib.Telnet(HOST) tn.read_until(b"Username:") tn.write(user.encode('ascii') + b"\n") if password: tn.read_until(b"Password:") tn.write(password.encode('ascii') + b"\n") tn.write(b"system\n") tn.write(b"vlan 2\n") tn.write(b"quit\n") tn.write(b"vlan 3\n") tn.write(b"quit\n") tn.write(b"vlan 4\n") tn.write(b"quit\n") tn.write(b"vlan 5\n") tn.write(b"quit\n") tn.write(b"return\n") tn.write(b"quit\n") print(tn.read_all().decode('ascii')) -
Python 2.7 脚本测试
#!/usr/bin/env python import getpass import time import telnetlib HOST = "192.168.50.1" user = "sht1" password = getpass.getpass() tn = telnetlib.Telnet(HOST) tn.read_until("Username:") tn.write(user + "\n") if password: tn.read_until("Password:") tn.write(password + "\n") tn.write("system\n") tn.write("vlan 6\n") tn.write("q\n") tn.write("vlan 7\n") tn.write("q\n") tn.write("vlan 8\n") tn.write("q\n") tn.write("vlan 9\n") tn.write("q\n") tn.write("vlan 10\n") tn.write("q\n") tn.write("return\n") tn.write("q\n") print tn.read_all()
-
-
验证脚本配置是否在SW1上生效
[SW1]display vlan The total number of vlans is : 10 -------------------------------------------------------------------------------- U: Up; D: Down; TG: Tagged; UT: Untagged; MP: Vlan-mapping; ST: Vlan-stacking; #: ProtocolTransparent-vlan; *: Management-vlan; -------------------------------------------------------------------------------- VID Type Ports -------------------------------------------------------------------------------- 1 common UT:Eth0/0/1(U) Eth0/0/2(D) Eth0/0/3(D) Eth0/0/4(D) Eth0/0/5(D) Eth0/0/6(D) Eth0/0/7(D) Eth0/0/8(D) Eth0/0/9(D) Eth0/0/10(D) Eth0/0/11(D) Eth0/0/12(D) Eth0/0/13(D) Eth0/0/14(D) Eth0/0/15(D) Eth0/0/16(D) Eth0/0/17(D) Eth0/0/18(D) Eth0/0/19(D) Eth0/0/20(D) Eth0/0/21(D) Eth0/0/22(D) GE0/0/1(D) GE0/0/2(D) 2 common 3 common 4 common 5 common 6 common 7 common 8 common 9 common 10 common VID Status Property MAC-LRN Statistics Description -------------------------------------------------------------------------------- 1 enable default enable disable VLAN 0001 2 enable default enable disable VLAN 0002 3 enable default enable disable VLAN 0003 4 enable default enable disable VLAN 0004 5 enable default enable disable VLAN 0005 6 enable default enable disable VLAN 0006 7 enable default enable disable VLAN 0007 8 enable default enable disable VLAN 0008 9 enable default enable disable VLAN 0009 10 enable default enable disable VLAN 0010 -
虽然配置是完成了,但是在运行脚本的过程中也遇到了问题,目前该报错还没有解决(可以用异常处理使得报错不显示,正常对设备配置),希望有大佬能够帮助解决
下面是报错:
Traceback (most recent call last): File "./telnet01.py", line 29, in <module> print(tn.read_all().decode('ascii')) File "/usr/lib/python3.6/telnetlib.py", line 333, in read_all self.fill_rawq() File "/usr/lib/python3.6/telnetlib.py", line 524, in fill_rawq buf = self.sock.recv(65535) ConnectionResetError: [Errno 104] Connection reset by peer Traceback (most recent call last): File "./telnet02.py", line 34, in <module> print tn.read_all() File "/usr/lib/python2.7/telnetlib.py", line 385, in read_all self.fill_rawq() File "/usr/lib/python2.7/telnetlib.py", line 576, in fill_rawq buf = self.sock.recv(65535) socket.error: [Errno 104] Connection reset by peer
写在最后
文章中可能存在需要错误,部分内容也含有笔者自己的观点,希望大佬们能够多多指正,也欢迎各位积极讨论。