【telnetlib】使用Python登录Cisco交换机执行命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【telnetlib】使用Python登录Cisco交换机执行命令相关的知识,希望对你有一定的参考价值。

参考技术A

更多内容请点击 我的博客 查看,欢迎来访。

telnetlib --- Telnet client

最近要对交换机端口进行控制,如果每次使用命令去操作确实挺麻烦的,就使用脚本一键实现,并有记录日志的功能。参考 https://blog.csdn.net/study_in/article/details/89338016

Telnet.read_until(expected, timeout=None) : #读取连接服务器后显示的内容,直到遇到同 expected 相同的字节串。或者等待时间大于 timeout 时直接向下运行。

Telnet.read_very_eager() : 读取从上次IO阻断到现在所有的内容,返回的是字节串,需要进行 decode() 编码。如果连接关闭或者没有可用数据时会抛出 EOFError ,如果没有其他可用的数据,返回的是 b"" ,除非在IAC中间,否则不会阻碍。

Telnet.open(host, port=23[, timeout]) : 连接到主机,端口号为第二个可选参数,默认为标准的Telnet端口(23),可选的 timeout 参数指定连接的超时时间,如果未指定,将使用全局默认超时设置。不要尝试去重新打开一个已经连接的实例对象。

Telnet.close() : 关闭连接。

Telnet.write(buffer) : # 将一个字节串(byte string)写进socket,如果连接被阻塞,这也会被阻塞,如果连接关闭,会抛出 OSError 。

Telnet.interact() : telnet的交互功能,下面用了一个死循环保证用户能够一直输入命令进行某些操作,也可以使用 Telnet.interact() 这个方法来使所连接终端持久化,不过官网说 (emulates a very dumb Telnet client)直译是一个非常愚蠢的客户端。

使用python实现对交换机端口关闭、打开功能。

Telnet客户端没有收到。 Python telnetlib作为服务器

我正在尝试发送“Hello Word!”在python3.5中使用telnetlib到localhost。我的代码:

import telnetlib

HOST = "127.0.0.1"

tn = telnetlib.Telnet(HOST, 135) # host, port, timeout

tn.write("Hello World!".encode('ascii'))

我已经在我的Windows 10中启用了telnet。我去了cmd并运行:

telnet localhost 135

然后我得到一个空白的屏幕:enter image description here

之后我运行了我的代码,它只是在0.3秒完成。终端没有输出。它只是留空。为什么没有“Hello World!”登上telnet cmd?怎么了?我是新来的。

编辑:

刚试过netcat客户端。仍然无法正常工作。

enter image description here

答案

听起来你在Windows 10中启用了telnet客户端应用程序,命令telnet localhost 135尝试连接到在localhost端口135上运行的已经运行的telnet服务器。没有输出,因为我猜它没有成功连接到任何东西。

您很可能需要一个telnet服务器,由于非常不安全,它似乎已从最新版本的Windows中弃用。 Microsoft建议使用远程桌面替换telnet

以上是关于【telnetlib】使用Python登录Cisco交换机执行命令的主要内容,如果未能解决你的问题,请参考以下文章

python中telnetlib模块的使用

Python3+telnetlib实现telnet客户端

Telnet客户端没有收到。 Python telnetlib作为服务器

python3+telnetlib实现简单自动测试

Python telnetlib:令人惊讶的问题

如何在 python telnetlib 中禁用 telnet echo?