我有一个基本的聊天服务器,我可以轻松连接到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会话应该从脚本启动的会话中接收消息。
有什么想法吗?
答案 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")
这里我在发送密码之前等待密码提示。