
平台工具:
- 实验平台:Linux Centos7
- 使用工具:EVE-ng、python 3.6.8
实验拓扑:
注意:
书中使用了 192.168.2.0/24 ,我这里才有eve桥接的虚拟网段192.168.242.0/24来演示本次实验。
本次实验只需要用到 Linux ,透明交换机SW(启动即可,无需配置)、LSW1(Python 第三方库 paramiko 要操控的设备。),其它 LSW未启动,后续实验再使用。
实验目的:
用Python Paramiko 模块实现 SSH 登陆单个交换机LSW1(192.168.242.11),为其 LoopBack0 端口配置IP地址 1.1.1.1 /32。配置完成后对设备进行配置保存,并退出。
实验前检查
检查网络连通性(PC ping 测 192.168.242.11),打开Linux,执行 ping 192.168.242.11。
检查 Linux的 arp 表项,执行 arp -a 查看表项。
交换机 LSW1 上查看接口 vlanif 1 的 MAC 地址,与 win10 中 arp 表项里的 MAC 对应得上,都为 4c1f-ccf2-1fdb
show interface vlanif 1
交换机 LSW1 上查看接口 vlanif 1 的 arp 表项,均能对应上
show arp interface vlanif 1
交换机 LSW1 确认 loopback 0 口不存在,存在则删除(多次实验造成)
LSW1配置
初始化
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密码
Python 代码
代码讲解,大神在书里和专栏中已逐条做了解释
# import 导入模块
import paramikoimport time
# 定义三个字符串类型的变量
ip = ‘192.168.242.11’
username = ‘python’
password = ‘123’
# 开启SSH会话赋值给变量
sshclient = 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 (‘已经成功登陆路由器’ + ip)
# 向路由器发出命令
command.send(‘configure terminal\n’)
command.send(‘interface loop 0\n’)
command.send(‘ip add 1.1.1.1 255.255.255.255\n’)
command.send(‘end\n’)command.send(‘wr mem\n’)
# 延时5秒
time.sleep(5
)# 设置截屏长度并打印出来
output = command.recv(65535).decode(‘ascii’)print (output)
# 退出ssh会话_
ssh_client.close
实验中观察
开启调测(实验中可观察),执行代码过程中,可以 debug 到交互包。
LSW1# debug ip packet
实验结果检查
脚本跑完后,可以到 LSW1 上查看 LoopBack 0 口的 IP 地址是否已经正确的配置上了。
show running-config interface LoopBack 0
代码运行截屏
大神在书里有解释,以下做了运行脚本时是否有带 decode(“ascii”) 的效果对比。
带有decode(“ascii”)的效果
不带decode(“ascii”)的效果


