使用Python的telnetlib模块时出现问题

时间:2009-12-22 09:06:35

标签: python telnet

我有一个基本的聊天服务器,我可以轻松连接到telnet。我只需输入主机和端口,无需进一步验证即可开始输入服务器可以解释的命令。为了模拟用户流量,我想创建一个脚本,它将打开telnet,连接到服务器,并立即开始向服务器发送命令。我最初尝试使用批处理脚本执行此操作,但在遇到太多路障后,我决定使用Python的telnetlib模块。这就是脚本现在的样子

import telnetlib
myTel = telnetlib.Telnet('XXX.XXX.XXX.XXX', XXXX)
myTel.write('login')
myTel.write('move room')
myTel.write('say message')
myTel.write('exit')
myTel.write('logout')

它非常简单,脚本运行没有错误。但是,如果我已经在另一个telnet会话上手动登录服务器,我看不到脚本进入主房间或发送聊天消息,这让我相信出现了问题。如果我手动启动两个telnet会话,我可以轻松地在会话之间发送和接收消息,因此我认为手动telnet会话应该从脚本启动的会话中接收消息。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

或许添加换行符有帮助吗?

myTel.write('login\n')

我还建议使用一些网络嗅探工具(即Wireshark)来验证你是否真的发送了你想要的内容。

答案 1 :(得分:0)

在您的代码中,您写入服务器,但为了接收数据,您最终必须使用该库的read methods之一。要查看具有“阅读主题”的客户端的示例实现,请参阅此博客文章:http://hahong.org/blog/posts/261

FN。还试试:

myTel.write('login\n')

..使用换行符。

答案 2 :(得分:0)

我会使用read_until来检查服务器是否已准备好接收命令这里是一个使用telnet与cisco交换机通信的示例:

from telnetlib import Telnet
PASSWD = "mypass"

t = Telnet(switch)
t.read_until("Password: ", 2)
t.write(PASSWD + "\r\n")

这里我在发送密码之前等待密码提示。