平台工具

  • 实验平台:WIN10
  • 使用工具:eNSP、python (可以用pyCharm进行编辑)



实验拓扑

书中使用了 192.168.2.0/24 网段,而我换成 192.168.11.0/24 网段。我自己的电脑(Win10 已安装 python 3.8.2)设置一块虚拟网卡 Loopback0 地址为 192.168.11.2/24,桥接到云彩,与实验拓扑拉通组网。

本次实验只需要用到 PC ,透明交换机SW1(启动即可,无需配置)、L3S1(Python 第三方库 paramiko 要操控的设备。),其它 L3S*设备 未启动,后续实验再使用。

《网络工程师的Python之路》实验1 基于 eNSP 拓扑

网络工程师的Python之路-1.paramiko实验之ENSP_ip地址

实验目的

  • 用 Python Paramiko 模块实现 SSH 登陆单个交换机L3S1(192.168.11.11),为其 LoopBack0 端口配置IP地址 1.1.1.1 /32。配置完成后对设备进行配置保存,并退出。

实验前检查

  • 检查网络连通性(PC ping 测 192.168.11.11),打开 cmd,执行 ping 192.168.11.11。

网络工程师的Python之路-1.paramiko实验之ENSP_python_02

  • 检查 win10 的 arp 表项,打开 cmd ,执行 arp -a ,找到 接口: 192.168.11.2 --- 0x12 查看表项

网络工程师的Python之路-1.paramiko实验之ENSP_桥接_03

  • 交换机 L3S1上查看接口 vlanif 1 的 MAC 地址,与 win10 中 arp 表项里的 MAC 对应得上
  • 网络工程师的Python之路-1.paramiko实验之ENSP_ip地址_04

L3S1配置

sysname L3SW2

aaa

明文密钥 123

local-user python password cipher 123
local-user python privilege level 15
local-user python service-type ssh


interface Vlanif1
ip address 192.168.11.11 255.255.255.0


stelnet server enable


ssh authentication-type default password

user-interface con 0
user-interface vty 0 4
authentication-mode aaa
protocol inbound ssh

Python 代码

import paramiko

import time


ip = "192.168.11.11"

username = "python"

password = "123"


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)

print("Sucessfully connected to ",ip)


command = ssh_client.invoke_shell()

command.send("sys\n")

command.send("interface LoopBack 0\n")

command.send("ip address 1.1.1.1 255.255.255.255\n")

command.send("return\n")

command.send("save\n")

command.send("y\n")



time.sleep(3)

command.send("display this\n")

time.sleep(1)


output = command.recv(65535)

print(output.decode("ascii"))


ssh_client.close()

网络工程师的Python之路-1.paramiko实验之ENSP_桥接_05

实验中观察

  • 开启调测(实验中可观察),执行代码过程中,可以 debug 到交互包

网络工程师的Python之路-1.paramiko实验之ENSP_ip地址_06

实验结果检查

  • 脚本跑完后,可以到L3S1 上查看 LoopBack 0 口的 IP 地址是否已经正确的配置上了。

网络工程师的Python之路-1.paramiko实验之ENSP_python_07