平台工具:
- 实验平台:Linux Centos7
- 使用工具:EVE-ng、python 3.6.8
实验拓扑:
注意:
书中使用了 192.168.2.0/24 ,我这里才有eve桥接的虚拟网段192.168.242.0/24来演示本次实验。
【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 11 至 15 。
实验环境配置
按照拓扑,每台交换机 vlan 1 都配置 vlanif 的 IP 作为管理。(附 LSW1 的配置,如 LSW2 则仅为将 192.168.242.11 改为 192.168.11.12,这里从简。)
初始化
1.配置hostname 和domain-name
hostname LSW1
ip domain-name shiranit.com
2.产生密钥,产生1024位的密钥
crypto key generate rsa general-keys modulus 1024
3.配置sssh的信息
会话超时时间
ip ssh time-out 120
最大认证次数
ip ssh authentication-retries 3
启用ssh和telnet认证
line vty 0 4
transport input ssh telnet
login local
4.本地认证用户
enable passwod 123
username python privilege 15 password 123
PS: privilege 15这么设置是为了免去登陆时输入enable密码
5.配置管理地址
interface Vlan 1 ip address 192.168.242.11 255.255.255.0
实验前检查
对LSW1到LSW5逐一进行检查,每台交换机都只有一个默认VLAN.
更多精彩内容关注“释然IT杂谈”
检查 虚拟机Linux到 LSW1 至 LSW5 的网络连通性,如不通需要排网络。(有时候 ping 前几个包会丢包,这个有可能 LSW们刚启动,生成树需要收敛,之后 arp 表项要建立。)
Python 代码
代码讲解,大神在书里和专栏中已逐条做了解释
# import 导入模块
import paramiko
import time
import getpass
# 定义两个个字符串类型的变量
username = input("Username: ")
password = getpass.getpass("Password: ")
#for循环
for i in range(11,16):
ip = '192.168.242.' + str(i)
# 开启SSH会话赋值给变量
ssh_client = paramiko.SSHClient()
# 开启可接收陌生的ssh服务会话
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('已经成功登陆交换机 LSW-' + str(i-10) + ' ' + ip)
# 关闭分屏功能
command.send('terminal length 0 \n')
#向交换机发送指令
# 进入特权模式
command.send('en\n')
# 进入全局模式
command.send('conf t\n')
#循环创建vlan
for i in range(11,16):
print('正在创建 VLAN :' + str(i))
command.send('vlan ' + str(i) + '\n')
time.sleep(1)
command.send('name Python_Vlan' + str(i) + '\n')
time.sleep(1)
command.send('end\n')
command.send('wr\n')
# 延时2秒
time.sleep(2)
# 设置截屏长度并打印出来
output = command.recv(65535).decode('ASCII')
print(output)
# 退出ssh会话
ssh_client.close()
执行脚本文件:
好了,代码执行完成回显,如上图显示。
实验结果检测
之后我们可以去每台 LSW 检查 VLAN 信息,查看是否自动建立好了,来验证 python 脚本的操作。
实验小结
怎样?能实现脚本下发自动配置,比手工敲指令是不是效率高很多。哈哈。但实际现网生产环境目前来看比较难随意部署这些玩意(安全原因)。不过这丝毫不影响咱们做实验和学习技能呀。
在实验过程中,python 脚本建 vlan ,然后咱们要重复实验,就得手工把 vlan 都删掉,25个vlan 操作有点累哈,其实同样可以写个脚本把 建的 VLAN 给删除掉。我已经写了,代码我就不贴上来了哈,要不您试试看?
交换机上查看已经删除掉了