你好,这里是网络技术联盟站。
在昨天的文章中,有小伙伴提到对这两天瑞哥提供的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标准库中提供的一个模块,这个我们需要注意一下。
怎么样,这下理解了吗?
版权归原作者 wljslmz 所有, 如有侵权,请联系我们删除。