运行环境:
物理机:win10 1903
网络设备:EVE-NG模拟器上运行思科三层路由器
网络设备OS版本:cisco ios(versions 15.6)
python环境:pycharm 3.3
python解析器版本:3.7
实验目的:给R4的lo1口配置地址:2.2.2.2/24
实验括扑:
以下代码参考《网络工程师的python之路》这本书:
import telnetlib #导入Telnetlib模块 host = "192.168.142.128" user = "python" #定义四个变量,分别是地址、用户名、密码、和退出字符串 password = "123" enter = "enter" exit_telnet = "exit" tn = telnetlib.Telnet(host,32771) #赋值tn,尝试以Telnet登录到192.168.142.128,32771。 tn.write(b"\r\n") #输入换行符,等于输入enter键。进入用户模式 tn.write(b"en\n") #进入R3的特权模式 tn.read_until(b"Password: ") #用read_until检测关键字:Password tn.write(password.encode('ascii') + b"\n") #当符合关键字条件之后,输入用户名,并用\n换行 tn.write(b"telnet 192.168.2.12\n") #利用python将Telnet到R4的命令发送给R3 tn.read_until(b"Username: ") #登录到R4后,会提示Username,跟前面一样,读取关键字 tn.write(user.encode('ascii') + b"\n") tn.read_until(b"Password: ") #登录到R4后,读取关键字,并输入密码 tn.write(password.encode('ascii') + b"\n") # ----------------------------------------下面的配置都是网工烂熟于心的配置了,这里就不再介绍--------- tn.write(b"en\n") tn.write(b"123\n") tn.write(b"conf t\n") tn.write(b"int lo1\n") tn.write(b"ip add 2.2.2.2 255.255.255.0\n") tn.write(b"do sh ip int br\n") tn.write(b"end\n") tn.write(b"exit\n") tn.read_until(b"[Connection to") #检测是否退出了R4的Telnet,这里只需检测是否为[Connection开头即可。 tn.write(exit_telnet.encode('ascii') + b"\n") #当检测到已经退出R4的Telnet,说明已经退回到R3的特权模式。这里再次输入exit退出。 tn.close() print(tn.read_all().decode('ascii')) #用read_all方法将登录SW1后执行命令的所有过程都记录下来,并通过print打印出来 #我觉得最有可能的是,要进行打印的字符串pycharm无法识别,导致只显示一个1.
最终效果: