用Python连接Telnet
我尝试用Python的一个库“telnetlib”来连接论坛,想做一个机器人来回复消息。
但是当我回复消息时,机器人却返回了不止一条消息。这是我的代码。
# -*- coding: cp950 -*-
import telnetlib,random
#f= open("ans.txt","r")
ans = [b"oao", b"xd"]
'''while True:
line = f.readline()
if line = "":
break
ans.append(line)
'''
tn = telnetlib.Telnet("ptt.cc")
tn.read_very_eager()
tn.write(b"*****\r\n") # this is where i enter my username
tn.read_very_eager()
tn.write(b"*****\r\n") # this is wher i enter my password
tn.read_very_eager()
tn.write(b"\r\n")
while True:
if tn.read_very_eager() != "" :
tn.write(b"")
tn.read_very_eager()
tn.write(b"su\r\n")
tn.read_very_eager()
tn.write(b"\r\n")
tn.read_very_eager()
tn.write(b"\r\n\r\n←")
tn.read_very_eager()
tn.read_very_eager()
for i in range(0,1000000):
x = 1
1 个回答
0
首先,我对telnet完全没有经验。
看了下Python的telnetlib文档,我发现你的代码和文档底部的例子有一些不同。最大的区别在于,他们会等待一个提示符来登录或者输入密码。即使你的read_very_eager
应该也能做到这一点,但用read_until
会更清楚一些。这可能会解决你的问题,或者给你一些提示。
试着把这个例子调整一下,让它更符合你的需求。
import sys
import telnetlib
HOST = 'ptt.cc'
user = 'username'
password = 'pass123'
tn = telnetlib.Telnet(HOST)
tn.read_until("login: ")
tn.write(user + "\n")
if password:
tn.read_until("Password: ")
tn.write(password + "\n")
# Do anything you need to here.
# If your server will accept these, try them first to isolate the problem
tn.write("ls\n")
tn.write("exit\n")
print tn.read_all()
正如MatthieuW提到的,你可以使用时间库来让程序暂停。
from time import sleep
print 'Start'
sleep(1)
print 'One second later'