当前位置: 首页 > 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标准库中提供的一个模块,这个我们需要注意一下。

怎么样,这下理解了吗?

http://www.lryc.cn/news/45340.html

相关文章:

  • 你真的会写 git commit message 吗?
  • ISO文件内添加kickstart完成自动安装
  • SpringBoot 整合RabbitMq 自定义消息监听容器来实现消息批量处理
  • jquery基础之操作节点对象
  • 对于Java的深入理解及其特点--面试
  • Linux GPSD的使用
  • ArrayList无参构造添加元素源码解读
  • 手写简易 Spring(二)
  • 排列问题DFS入门
  • 【每日一题Day159】LC1638统计只差一个字符的子串数目 | 枚举
  • 【07 Metadata and VendorTag】
  • Golang中Model的使用
  • 交友项目【基础环境搭建】
  • 入职时,公司要求自己带电脑,每月给100元补贴,如果不接受就不能入职!
  • 20道经典Redis面试题
  • 十分钟带你看懂接口测试,2023最全超大型接口测试攻略
  • 【设计模式】创建型-单例模式
  • Python 练习 六
  • 「SQL面试题库」 No_22 员工奖金
  • 瞒不住了,Prefetch 就是一个大谎言
  • 这个时候了,你还不会不知道JavaMail API吧
  • JavaScript var let区别
  • Thinkphp 6.0容器和依赖注入
  • Type javax.servlet.http.HttpServletRequest not present
  • 一键配置Ubuntu的OpenHarmony基础编译环境
  • ASP网络求职招聘系统的设计与实现
  • 面试—C++《智能指针》常考点
  • 自动化测试方案编写思路
  • 【爬虫】案例04:某小说网多线程小说下载
  • 海外独立站创业,Shopify网站如何引流