首页 > 编程语言 >HCIA17 Python自动化基础 之telnet lib 库

HCIA17 Python自动化基础 之telnet lib 库

时间:2024-06-20 22:59:42浏览次数:21  
标签:write lib Python telnet tn telnetlib Telnet password

1.实验介绍及拓扑

公司交换机,管理 IP 地址为 192.168.0.101/24。现编写自动化脚本,查看设备当前配置文件。


2.掌握内容及配置思路

2.1掌握内容

Python 基本语法
telnetlib 基本方法

2.2配置思路

1.    完成设备 Telnet 预配置

(配置 Telnet 密码,开启 Telnet 功能和允许 Telnet 登录)
2.    编写 Python 脚本:调用 telnetlib 登陆设备,然后查看配置。

3 配置步骤

3.1 安装python和VMware

3.1.1 python 官网下载并安装

3.1.2 VMware下载安装并修改配置

自行下载

虚拟机下载安装后出现两个虚拟网卡

更改其中VMnet8配置

3.1.3 pycharm下载安装 

3.2 自己电脑真实网卡桥接网云cloud
 

进行如下配置

3.3交换机的 Telnet 预配置

#认证模式为密码认证
# 创建 Telnet 登陆密码
# 应用在telnet协议
# 特权15
#开启telnet服务

#配置管理地址vlan1 192.168.0.101 /24
S1
#

sys

#
undo info-center enable
#
user-interface vty 0 4
authentication-mode password
set authentication password ci huawei@123
protocol inbound telnet
user privilege level 15

quit
#
telnet server enable

#

int g0/0/0

 ip add 192.168.0.101 24

3.4测试自己电脑和路由器联通性

因为本电脑是0.100 而 esnp上vlan 1配置0.101

测试telnet 路由器是成功的

3.5 Python脚本式运行

pycharm需要license ,改交互式运行吧(有时间用ssh做吧)

3.6 Python交互式运行

执行如下命令

import telnetlib           
import time                                                                                                                                host = '192.168.0.101'
password = 'huawei@123'
tn = telnetlib.Telnet(host)
tn.read_until(b"Password:")
tn.write(password.encode('ascii') + b"\n")
tn.write(b"screen-length 0 temporary \n")
tn.write(b"dis cu \n")
time.sleep(2)
print(tn.read_very_eager().decode("ascii"))
tn.close()

4 代码解析

步骤 1    导入模块

import telnetlib
import time
导入本段代码中需要使用的telnetlib和time两个模块。这两个模块都是Python自带的模块,无需安装。
本章节主要介绍Telnetlib作为客户端的常用类和方法,例如Telnet类下read_until、read_very_eager()、write()等方法。更多Telnet的方法请参考telnetlib官方文档:https://docs.python.org/3/library/telnetlib.html#telnet-example。
Python默认无间隔按顺序执行所有代码,在使用telnet向交换机发送配置命令时候可能会遇到响应不及时或者设备回显信息显示不全。此时,可以使用time模块下的sleep方法来人为暂停程序。

步骤 2    登录设备

调用telnetlib里Telnet类的多种方法登录S1。
host = '192.168.0.101'
password = 'huawei@123'
tn = telnetlib.Telnet(host)
首先创建两个变量,host和password分别为设备的登录地址和密码,与设备配置参数一致。因为本例中仅在设备配置telnet密码方式登陆,所以无需用户名。
telnetlib.Telent()表示调用telnetlib类下的Telnet()方法。这个方法中包含登陆的参数,包括IP地址和端口号等信息。不填写端口信息则默认为23号端口。
本例中tn = telnetlib.Telnet(host),表示登陆host='192.168.0.101'的设备,然后将telnetlib.Telnet(host)赋值给tn。
tn.read_until(b"Password:")
正常Telnet登陆192.168.0.101设备时候,会有如下回显信息:
  
请注意程序并不知道需要读取到什么信息为止,所以我们使用read_until()指示读取到括号内信息为止。
本例中tn.read_until(b"Password:")表示读取到显示 "Password:"为止。其中字符串“Password:”前的“b”表示将Python3中默认的unicode编码变为bytes。这是函数对输入数据的要求,具体内容可以查看telnetlib官方文档,若不携带则程序会报错。
tn.write(password.encode('ascii') + b"\n")
在代码读取到显示"Password:"后,程序需输入参数password。这个参数在前面已定义,作为Telent登录的密码。使用write()完成password的写入。
本例中tn.write(password.encode('ascii') + b"\n"),输入的内容由两个部分组成,password.encode('ascii') 和b"\n"。password.encode('ascii')表示转换password代表的字符串“huawei@123”的编码类型为ASCII。“+”表示将该符号前后的字符串连接。“\n”为换行符,相当于输入后敲击回车键。所以本行代码含义为输入密码“huawei@123”并敲击回车键。

步骤 3    输入配置命令

Telnet到设备后,使用Python脚本向设备输入执行命令。
 
tn.write(b'display cu \n')
继续使用write()向设备输入命令。输入的命令“display cu”为“display current-configuration”的缩写,其功能是显示设备的当前配置。
time.sleep(1)
time.sleep(1)的作用是将程序暂停1秒。用于等待交换机回显信息,然后再执行后续代码。如果没有设置等待时间,则程序会直接执行下一行代码,导致没有数据可供读取。
print(tn.read_very_eager().decode('ascii'))
print()表示显示括号内的内容到控制台。
tn.read_very_eager()表示读取当前的尽可能多的数据。
. decode('ascii'))表示将读取的数据解码为ASCII。
本例中这段代码的功能为将输入“display cu”后1秒内S1输出的信息显示到控制台。

步骤 4    关闭会话

tn.close()
调用close()关闭当前会话。设备vty连接数量有限,在执行完脚本后需要关闭此telnet会话。

标签:write,lib,Python,telnet,tn,telnetlib,Telnet,password
From: https://blog.csdn.net/weixin_55327573/article/details/139709991

相关文章

  • 仿真模拟--telnet服务两种认证模式(自作)
    自己做的笔记,有问题或看不懂请见解一下~ 目录两个路由器间实现telnet服务(password认证模式)serverclient两个路由器间实现telnet服务(aaa认证模式)serverclient改名tab键补齐不会就扣问号                               ......
  • 【Python日志模块全面指南】:记录每一行代码的呼吸,掌握应用程序的脉搏
    文章目录......
  • hashlib加密模块
    hashlib加密模块importhashlibmd5=hashlib.md5("你好".encode("utf-8"))#实例化把类的功能赋值给变量print(md5.hexdigest())md5.update('世界'.encode("utf-8"))print(md5.hexdigest(),len(md5.hexdigest()))sha256算法h=hashlib.sha256(......
  • 2024华为OD机试真题- 计算三叉搜索树的高度-(C++/Java/Python)-C卷D卷-100分
     2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++) 题目描述定义构造三叉搜索树规则如下:每个节点都存有一个数,当插入一个新的数时,从根节点向下寻找,直到找到一个合适的空节点插入。查找的规则是:1.如果数小于节点的数减去500,则将数插入节点的左子树2.如果数大于节点的......
  • python GUI:tkinter 信息管理系统——不会长胖的斜杠(浔川python推广部)
    总览前言主要实现登录注册修改运行登录注册登录成功主界面添加查询查询成功保存信息信息管理系统v1.1登录界面获取账号密码主界面查询查询成功显示信息信息管理系统v2.0登录主界面增加查询删除显示代码获取前言本系统主要通过tkinter模块实现,通过读取对应的文件,实现登......
  • python工具系列(亲测有效):在pycharm中复制粘贴时出现ENSP如何处理
    在pycharm中复制粘贴时出现ENSP如何处理在pycharm中复制粘贴时出现ENSP如何处理在pycharm中复制粘贴时出现ENSP如何处理安装nexchatgpt插件之后,生成的代码,如果直接粘贴到pycharm.py文件中,会出现ENSP图样,如下图所示:粘贴到jupyternotebook虽然看不出来,也是不能......
  • 新手小白包会(python) | OpenCV进阶教程,带你踏入计算机视觉领域
    目录一、OpenCV简介1.应用场景2.学习与使用二、OpenCV安装 1.安装2.验证三、OpenCV使用1.边缘检测1)sobel算子(cv2.Sobel()) 2)Scharr算子(cv.Scharr()) 3)laplacian(cv2.Laplacian())4)canny算法(cv.Canny())2.下采样(cv2.pyrDown())3.上采样(cv2.pyrUp())4.拉普拉斯金字塔......
  • 基于python-深度学习的混凝土马路和泥地马路识别-含数据集+pyqt界面
    代码下载:https://download.csdn.net/download/qq_34904125/89434765本代码是基于pythonpytorch环境安装的。下载本代码后,有个requirement.txt文本,里面介绍了如何安装环境,环境需要自行配置。或可直接参考下面博文进行环境安装。深度学习环境安装教程-anaconda-python-pyto......
  • 基于python-CNN卷积神经网络的鱼类识别-含数据集+pyqt界面
    代码下载地址:https://download.csdn.net/download/qq_34904125/89434763本代码是基于pythonpytorch环境安装的。下载本代码后,有个requirement.txt文本,里面介绍了如何安装环境,环境需要自行配置。或可直接参考下面博文进行环境安装。深度学习环境安装教程-anaconda-python-......
  • 如何用Pyinstaller将python脚本打包成exe文件?
    首先用打开cmd命令管理器下载pyinstallerpipinstallpyinstaller国内镜像源pipinstall-ihttps://pypi.douban.com/simple/pyinstaller#豆瓣源pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplepyinstaller#清华源本来我的文件夹只有一个py文件 需要我......