网工python脚本基础

一、基本准备
1、telnetlib库安装

(1)测试telnetlib库是否能够正常调用

try:
    import telnetlib
    print("working")
except:
    print("not working")

(2)安装命令

pip install telnetlib3
2、windows操作系统开启telnet服务

步骤1:打开控制面板。

步骤2:点击“程序”。

步骤3:点击“程序和功能”。

步骤4:点击“启用或关闭Windows功能”。

步骤5:在弹出的窗口中找到Telnet 客户端并勾选,然后点击“确定”按钮。

步骤6:等待Telnet Client安装完毕。

二、telnetlib库基础
1、telnetlib库简介

        telnetlib用于通过Telnet协议进行远程登录和交互操作。它提供了一组方法,可以连接到远程主机、发送命令、接收响应、处理特殊字符等。

2、telnetlib库的一些常用方法和属性简介

(1)Telnet(host=None, port=23, timeout=None):Telnet类的构造函数,用于创建一个Telnet对象。参数host是远程主机的地址,port是远程主机的端口号,timeout是连接超时时间。

(2)open(host, port=23, timeout=None):打开一个Telnet连接。参数host和port与Telnet构造函数中的相同。

(3)read_until(expected, timeout=None):读取输入直到遇到预期的字符串。参数expected是预期的字符串,timeout是读取超时时间。

(4)read_very_eager()---读取输入缓冲区中的所有数据,不会阻塞。

(5)write(data)---向远程主机发送数据。参数data是要发送的数据。

(6)close()---关闭Telnet连接。

(7)set_debuglevel(level)---设置调试级别,用于输出调试信息。

(8)set_option_negotiation_callback(callback)---设置选项协商回调函数。

(9)expect(list, timeout=None)---等待预期的字符串出现,返回匹配的字符串。参数list是一个字符串列表,每个字符串表示一个预期的字符串,timeout是等待超时时间。

(10)expect_regexp(list, timeout=None)---等待预期的正则表达式出现,返回匹配的字符串。参数list是一个正则表达式列表,每个正则表达式表示一个预期的字符串,timeout是等待超时时间。

(11)set_echo(option)---设置是否回显输入。

(12)set_timeout(timeout)---设置读取超时时间。

(13)set_option_negotiation_callback(callback)---设置选项协商回调函数。

(14)set_option_negotiation_callback(callback)---设置选项协商回调函数。

三、实验
1、实验设备基本配置
sys
sys hehe
user-interface console 0
idle-timeout 0 0
q
undo info-center enable
aaa
local-user huawei password cipher huawei
local-user huawei service-type telnet
local-user huawei privilege leve 15
q
user-interface vty 0 4
authentication-mode aaa
q
q
2、检验能否手动连接Telnet
telnet 127.0.0.1 2000
3、编写和运行Python脚本
import telnetlib
# 引入 time 模块,调用 sleep() 函数完成等待操作
import time
 ​
# 定义变量存取设备的主机号(即对端用于建立连接的ip)、用户名、密码
host = "127.0.0.1"
#user = "huawei"
#password = "huawei"
  
# 通过telnet服务连接登录设备
tn = telnetlib.Telnet(host,port = 2000)
 ​
#这里根据不同设备厂家,等待的关键字会有不同,timeout=1 表示等待的时间
#tn.read_until(b"Username:",timeout=1)    
#tn.write(user.encode('ascii') + b"\n")
#tn.read_until(b"Password:",timeout=1)
#tn.write(password.encode('ascii') + b"\n")
 ​
tn.read_until(b"<hehe>",timeout=1)
print('ok')
 ​
# 进入系统视图,修改设备名称,配置g 0/0/1口
tn.write(b"sys\n")
tn.write(b"sys haojiahuo\n")
tn.write(b"interface g 0/0/1\n")
tn.write(b"ip address 192.168.1.1 24\n")
  
# 返回用户视图,保存配置
tn.write(b"quit\n")
tn.write(b"save\n")
tn.write(b"Y\n")
  
# 等待
time.sleep(3)
  
# 打印截屏
output = tn.read_very_eager().decode('ascii')
print(output)
  
# 退出登录
tn.close()
4、验证结果

(1)设备名称是否已经更改为haojiahuo

(2)查看g 0/0/1接口是否已经配置ip

display ip interface brief
四、实验中存在的问题

1、在使用模拟器实验时,可能会因为模拟器自身的原因,导致读取关键字操作读不到关键字<hehe>,这里脚本之所以可以继续运行,是因为设置了等待超时时间。

2、在使用真机实验时,可能会因为设备的系统版本较低,导致脚本正常跑完后,没有产生效果。

五、脚本拓展思路

        有了由0到1的突破后,我们可以活结合输入输出语句、流程控制语句、函数等等完成一系列交互良好、可重复、功能丰富的脚本。还可以结合IO流操作,将一系列需要类似配置的设备主机号写入一个文件中,将文件导入后,逐一去读取文件中的主机号,实现关键参数可变且细致的类批处理操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值