当前位置: 首页 > news >正文

Python网络设备脚本中经常使用的connecthandler和telnetlib是什么意思?

你好,这里是网络技术联盟站。

在昨天的文章中,有小伙伴提到对这两天瑞哥提供的Python脚本中涉及的connecthandler和telnetlib两个模块不是太了解,想要学习一下:

今天瑞哥就安排上!

其实这两个模块是Python与网络设备交互最常用的两个模块,当然了,还有其他的哈,那么今天我们就针对性的讲一下吧,希望不仅仅是“死鱼非命”这位小伙伴能够理解,在看的各位朋友都能理解两个模块该如何使用。

让我们直接开始!

一、ConnectHandler

Python的Paramiko库提供了一个叫做ConnectHandler的模块,可以简化SSH连接和命令执行的代码,使得我们能够更加方便地与网络设备交互。

1.1 ConnectHandler模块介绍

ConnectHandler模块是Paramiko库提供的一个高级模块,它封装了SSH连接、命令执行和输出解析等功能,使得我们能够更加方便地与SSH服务器进行交互。

通过ConnectHandler模块,我们可以:

  • 建立SSH连接
  • 发送命令
  • 获取输出结果
  • 关闭SSH连接

ConnectHandler模块支持的设备类型非常丰富,包括华为、H3C、锐捷、Cisco、Juniper、HP、Fortinet等众多品牌的设备。

1.2 使用示例

下面我们来看一个简单的使用示例,该示例使用ConnectHandler模块连接到一个Cisco路由器,并执行一个命令:

from netmiko import ConnectHandler# 定义设备信息
device = {'device_type': 'cisco_ios','ip': '192.168.1.1','username': 'username','password': 'password'
}# 建立SSH连接
with ConnectHandler(**device) as conn:# 发送命令output = conn.send_command('show ip interface brief')# 输出结果
print(output)

在上面的代码中,我们首先定义了一个字典类型的device变量,其中包含了连接设备的必要信息,比如设备类型、IP地址、用户名和密码等。接着,我们使用ConnectHandler模块建立SSH连接,并使用with语句来确保连接被正确关闭。在连接建立后,我们发送了一个命令show ip interface brief,并使用send_command方法来执行该命令并获取输出结果。最后,我们输出了命令的输出结果。

除了使用send_command方法来发送单个命令外,ConnectHandler模块还提供了一系列其他方法,如send_config_set、send_config_from_file等,可以用于发送多个配置命令或从文件中加载配置命令。

1.3 小结

ConnectHandler模块是Python Paramiko库提供的一个高级模块,它封装了SSH连接、命令执行和输出解析等功能,使得我们能够更加方便地与SSH服务器进行交互。在使用ConnectHandler模块时,我们只需要提供设备的必要信息,就可以通过简单的代码来实现SSH连接和命令执行。这大大简化了SSH交互的代码编写,提高了我们的工作效率。

二、telnetlib

Python的telnetlib库提供了一个telnet客户端,可以用于与telnet服务器进行交互。

2.1 telnetlib库介绍

telnetlib库是Python标准库中提供的一个模块,它提供了一个telnet客户端,可以用于与telnet服务器进行交互。

通过telnetlib库,我们可以:

  • 建立telnet连接
  • 发送命令
  • 获取输出结果
  • 关闭telnet连接

2.2 使用示例

下面我们来看一个简单的使用示例,该示例使用telnetlib库连接到一个telnet服务器,并执行一个命令:

import telnetlib# 定义设备信息
host = '192.168.1.1'
username = 'username'
password = 'password'# 建立telnet连接
tn = telnetlib.Telnet(host)# 登录
tn.read_until(b'Username: ')
tn.write(username.encode('ascii') + b"\n")
tn.read_until(b'Password: ')
tn.write(password.encode('ascii') + b"\n")# 发送命令
tn.write(b"show ip interface brief\n")
output = tn.read_all().decode('ascii')# 关闭连接
tn.close()# 输出结果
print(output)

在上面的代码中,我们首先定义了一些必要的设备信息,如telnet服务器的IP地址、用户名和密码等。接着,我们使用telnetlib.Telnet类建立telnet连接,并使用read_until方法和write方法登录到服务器。在登录后,我们使用write方法发送了一个命令show ip interface brief,并使用read_all方法获取输出结果。最后,我们关闭了telnet连接,并输出了命令的输出结果。

除了使用read_all方法来获取输出结果外,telnetlib库还提供了一系列其他方法,如read_until、read_eager、read_some等,可以用于读取不同形式的输出。

2.3 小结

telnetlib库是Python标准库中提供的一个模块,它提供了一个telnet客户端,可以用于与telnet服务器进行交互。通过telnetlib库,我们可以实现telnet连接的建立、命令的发送和输出结果的获取等功能。在使用telnetlib库时,我们需要使用telnetlib.Telnet类来建立连接,并使用相应的方法来执行操作和获取输出结果。

三、总结

本文给大家介绍了两个重要的知识点:

  • ConnectHandler
  • telnetlib

ConnectHandler和telnetlib在Python体系的范围中是有差距的:

可以看到ConnectHandler属于Paramiko库的一个高级模块,而telnetlib是Python标准库中提供的一个模块,这个我们需要注意一下。

怎么样,这下理解了吗?

相关文章:

Python网络设备脚本中经常使用的connecthandler和telnetlib是什么意思?

你好,这里是网络技术联盟站。 在昨天的文章中,有小伙伴提到对这两天瑞哥提供的Python脚本中涉及的connecthandler和telnetlib两个模块不是太了解,想要学习一下: 今天瑞哥就安排上! 其实这两个模块是Python与网络设备…...

你真的会写 git commit message 吗?

作者:明明如月学长, CSDN 博客专家,蚂蚁集团高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《EffectiveJava》独家解析》专栏作者。 热门文章推荐…...

ISO文件内添加kickstart完成自动安装

目录 将待制作的centos iso文件挂载到/mnt/目录 将/mnt/下的所有文件复制到新的目录/tmp/mycentos 创建kickstart文件 修改启动文件 重新制作ISO文件 制作完成 kickstart可以实现根据配置自动安装操作系统,本文主要讲解如何让机器读取到iso文件后自动完成操作…...

SpringBoot 整合RabbitMq 自定义消息监听容器来实现消息批量处理

SpringBoot 整合RabbitMq 自定义消息监听容器来实现消息批量处理前言添加依赖配置文件编写监听器创建SimpleRabbitListenerContainerFactory发送消息前言 RabbitMQ是一种常用的消息队列,Spring Boot对其进行了深度的整合,可以快速地实现消息的发送和接收…...

jquery基础之操作节点对象

jquery操作节点(元素)对象 捕获-DOM操作,获取内容,值 获取内容:1.text()获取元素的文本内容 2.html()获取元素的文档内容 …...

对于Java的深入理解及其特点--面试

前言 计算机语言千千万,每一种语言都有其自己的特点、擅长的领域。在学习了Java之后才对Java有了进一步的理解。 面试问一: 你是如何理解Java这门语言的? 这里我们应该从下面几个点去总结 1、Java语言具有的属性 2、他的特点在哪 Java语…...

Linux GPSD的使用

目录 1: GPSD 运行状态查看 2:停止GPSD 服务 3: GPSD运行输出(协议的识别) 4:开启的服务...

ArrayList无参构造添加元素源码解读

一、ArrayList无参构造add方法源码阅读 Test//无参构造源码阅读 public void testArrayListNoConstructorAdd(){ArrayList<Integer> arrayList new ArrayList<>();ArrayList<Integer> list new ArrayList<>();arrayList.add(1);arrayList.add(12);a…...

手写简易 Spring(二)

文章目录手写简易 Spring&#xff08;二&#xff09;1. 扩展 BeanFactory 接口2. 实现资源加载器&#xff0c;从 Spring.xml 解析和注册 Bean 对象1. 核心实现类 XmlBeanDefinitionReader3. 实现应用上下文&#xff0c;自动识别、资源加载、扩展机制1. 应用上下文2. 核心实现类…...

排列问题DFS入门

1、题目描述&#xff08;全排列&#xff09; 输入一个正整数n&#xff0c;输出1~n的全排列。 输入格式 一个正整数n。 输出格式 所有1~n的全排列&#xff0c;每个排列占一行。 样例输入 3 样例输出 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 算法思路 题目要求输出n的全…...

【每日一题Day159】LC1638统计只差一个字符的子串数目 | 枚举

统计只差一个字符的子串数目【LC1638】 给你两个字符串 s 和 t &#xff0c;请你找出 s 中的非空子串的数目&#xff0c;这些子串满足替换 一个不同字符 以后&#xff0c;是 t 串的子串。换言之&#xff0c;请你找到 s 和 t 串中 恰好 只有一个字符不同的子字符串对的数目。 比…...

【07 Metadata and VendorTag】

1. Metadata结构及分类 一个 metadata 通过tag,value及 type 来描述。不同的 metadata 分成三类 controls,dynamic 及 static 2. MTK Metadata IMetadata Mtk metadata containerIMetadataConverter Provide mutual conversion for Android camera_metadata and MTK Imetada…...

Golang中Model的使用

导语我们都知道在Golang中我们一般都是设置GOPATH目录&#xff0c;这个目录主要存放我们的第三方包&#xff0c;这个方式一直不是很方便&#xff0c;今天给大家介绍Go 1.11版本中推出的GoModul使用方法&#xff0c;学过java的同学&#xff0c;可能对maven包有所了解&#xff0c…...

交友项目【基础环境搭建】

目录 1&#xff1a;交友项目架构介绍 1.1&#xff1a;前后端分离的概述 1.2&#xff1a;YAPI介绍&#xff08;虚拟机中已经配好&#xff09; 基本信息 使用 安装跨域拓展&#xff08;浏览器上安装跨域处理插件&#xff09; 2&#xff1a;虚拟机工具项目搭建 2.1&#xff1…...

入职时,公司要求自己带电脑,每月给100元补贴,如果不接受就不能入职!

为了节约成本&#xff0c;公司能做出什么事&#xff1f;一位网友遇到了这样的事&#xff1a;入职时&#xff0c;公司要求自己带电脑&#xff0c;每个月给100元补贴&#xff0c;如果不接受就得放弃入职&#xff0c;这样的公司有没有坑&#xff1f;有人问&#xff1a;连基本的公司…...

20道经典Redis面试题

20道经典Redis面试题 前言 整理了20道经典Redis面试题&#xff0c;希望对大家有帮助。 1. 什么是Redis&#xff1f;它主要用来什么的&#xff1f; Redis&#xff0c;英文全称是Remote Dictionary Server&#xff08;远程字典服务&#xff09;&#xff0c;是一个开源的使用A…...

十分钟带你看懂接口测试,2023最全超大型接口测试攻略

一、什么是接口测试&#xff1f; 所谓接口&#xff0c;是指同一个系统中模块与模块间的数据传递接口、前后端交互、跨系统跨平台跨数据库的对接。而接口测试&#xff0c;则是通过接口的不同情况下的输入&#xff0c;去对比输出&#xff0c;看看是否满足接口规范所规定的功能、…...

【设计模式】创建型-单例模式

文章目录一、单例模式二、单例模式的八种实现方式2.1、饿汉式&#xff08;静态常量&#xff09;2.2、饿汉式&#xff08;静态代码块&#xff09;2.3、懒汉式&#xff08;线程不安全&#xff09;2.4、懒汉式&#xff08;线程安全&#xff0c;同步方法&#xff09;2.5、双重检查2…...

Python 练习 六

1、(最大数的出现)编写程序读取整数,找出它们中的最大值&#xff0c;然后计算它的出现次数。假设输入以数字0结束。假设你输入的是“352555 0";程序找出的最大数是5&#xff0c;而5的出现次数是4。(提示:维护两个变量max和 count。变量max存储的是当前最大数&#xff0c;而…...

「SQL面试题库」 No_22 员工奖金

&#x1f345; 1、专栏介绍 「SQL面试题库」是由 不是西红柿 发起&#xff0c;全员免费参与的SQL学习活动。我每天发布1道SQL面试真题&#xff0c;从简单到困难&#xff0c;涵盖所有SQL知识点&#xff0c;我敢保证只要做完这100道题&#xff0c;不仅能轻松搞定面试&#xff0…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...