Python网络运维实验-telnet

本文通过Python的telnetlib模块,详细介绍了如何在思科网络环境中,利用脚本实现R1和R2路由器的环回接口配置,包括IP地址设置。适合学习网络自动化运维的读者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python网络自动化运维实验-telnet

(本博客借鉴《网络工程师的python之路》这本书)

实验环境

在这里插入图片描述

  采用思科平台gns3。IP地址已经写好,所有路由器的账号和密码都已提前配置好。用户登录直接是等级15,不需要输入enable密码。
  在这个环境中,cloud1连接的虚拟机centos 7.6系统
  确保centos与R1 R2之间能ping通。

实验需求

  用telnetlib模块登录到R1和R2,配置环回接口 loopback1的IP地址为 1.1.1.1和2.2.2.2。刚开始设备里没有环回接口。
在这里插入图片描述

实验脚本和结果

脚本

[root@mty xin]# cat telnet.py
import telnetlib

host=['192.168.148.11','192.168.148.12']
user='aaa'
password1='bbb'
a=0

for i in host:
    tn=telnetlib.Telnet(host[a])
    tn.read_until(b"Username:")
    tn.write(user.encode('ascii')+b"\n")
    tn.read_until(b"Password:")
    tn.write(password1.encode('ascii')+b"\n")

    tn.write(b"conf t\n")
    tn.write(b"int loopback 3\n")
    if i=='192.168.148.11':
        tn.write(b"ip add 1.1.1.1 255.255.255.255\n")
    else:
        tn.write(b"ip add 2.2.2.2 255.255.255.255\n")
    tn.write(b"end\n")
    tn.write(b"exit\n")

    print(tn.read_all().decode('ascii'))
    a=a+1

回显结果:

[root@mty xin]# python telnet.py
 
R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#int loopback 3
R1(config-if)#ip add 1.1.1.1 255.255.255.255
R1(config-if)#end
R1#exit

 
R2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#int loopback 3
R2(config-if)#ip add 2.2.2.2 255.255.255.255
R2(config-if)#end
R2#exit

R1 R2结果
在这里插入图片描述

脚本分析

在python3中使用telnetlib需要注意一下几点:

  1. 在字符串的前面加上b。
  2. 在变量和telnetlib函数后面需要加上.encode(‘ascii’)函数。
  3. 在read_all()函数后面需要加上decode(‘ascii’)函数。
  4. python2则不需要上面三条。

分析

import telnetlib

调用telnetlib模块完成telnet的功能。

host=['192.168.148.11','192.168.148.12']
user='aaa'
password1='bbb'
a=0

定义两个用于登录的ip地址,放在列表便于遍历。定义用户名和密码。a=0是用来配合遍历ip地址的。

for i in host:
    tn=telnetlib.Telnet(host[a])

遍历第一个ip地址,然后登录上去。

    tn.read_until(b"Username:")
    tn.write(user.encode('ascii')+b"\n")
    tn.read_until(b"Password:")
    tn.write(password1.encode('ascii')+b"\n")

输入提前定义好的用户名和密码。然后因为是字符串所以前面加’b’,因为调用了变量user和password1所以跟上.encode(‘ascii’)。
意思是当读取到"Username: “输入"aaa”。当读取到"Password:“输入"bbb”。

    tn.write(b"conf t\n")
    tn.write(b"int loopback 3\n")

进入到loopback3接口

    if i=='192.168.148.11':
        tn.write(b"ip add 1.1.1.1 255.255.255.255\n")
    else:
        tn.write(b"ip add 2.2.2.2 255.255.255.255\n")

第一遍遍历的是192.168.148.11这个ip地址,第二遍是192.168.148.12这个p地址。按照需求给R1配 1.1.1.1,给R2配2.2.2.2。

    tn.write(b"end\n")
    tn.write(b"exit\n")

第一个end是回到#模式。
第二个exit是退出telnet模式。
如果不退出telnet模式,则结尾的 print(tn.read_all().decode(‘ascii’))不生效。

 print(tn.read_all().decode('ascii'))

把执行的命令回显到centos的窗口。必须退出telnet。

a=a+1

最后a=a+1是为了第二遍遍历的时候 tn=telnetlib.Telnet(host[a]) 能够登录到第二个ip地址。

### Python Telnet 远程登录自动化运维实现方法 通过 `telnetlib` 库可以轻松实现基于 PythonTelnet 客户端功能,从而完成远程服务器的连接、命令执行以及数据交互等操作。以下是具体实现方式: #### 使用 `telnetlib` 实现 Telnet 登录 Python 提供了一个标准库模块 `telnetlib` 来支持 Telnet 协议的操作[^1]。该模块允许开发者创建一个 Telnet 客户端实例并与其通信。 ```python import telnetlib def telnet_login(host, username, password): tn = telnetlib.Telnet(host) # 创建 Telnet 对象并连接到主机 # 等待用户名提示符并输入用户名 tn.read_until(b"login: ") tn.write(username.encode('ascii') + b"\n") # 等待密码提示符并输入密码 tn.read_until(b"Password: ") tn.write(password.encode('ascii') + b"\n") return tn ``` 上述代码展示了如何建立与目标设备的 Telnet 链接,并自动处理认证过程[^2]。 #### 执行远程命令 一旦成功登录到远程设备上,就可以发送各种命令来获取所需的信息或者配置网络参数。 ```python def execute_command(tn_instance, command): tn_instance.write(command.encode('ascii') + b'\n') output = tn_instance.read_until(b'#', timeout=5).decode('ascii') # 假设路由器使用 '#' 结束每条指令响应 return output.strip() ``` 此函数负责向已连通的目标机器发出指定 Shell 或者 CLI 指令,并读取返回的结果[^3]。 #### 关闭会话 最后,在所有的任务完成后记得关闭当前 session 节省资源。 ```python tn.close() ``` 以上就是利用 Python 编写脚本来控制其他计算机上的程序和服务的一个简单例子[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值