【问题标题】:connect telnet with python用python连接telnet
【发布时间】:2011-12-07 11:18:43
【问题描述】:

我尝试用python的库“telnetlib”连接bbs,尝试做一个机器人来回答

消息。当我回复消息时,机器人返回了超过 1 条消息。这些是我的

代码。

# -*- 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

【问题讨论】:

  • 您能解释一下这里的“消息”是什么意思吗?什么是预期的,你得到了什么?
  • 数到一百万?导入时间 time.sleep(1.0)
  • 请同时提供very_eager函数。没有它,调试几乎是不可能的。
  • 对不起,read_very_eager 是标准函数。

标签: python sockets telnet telnetlib


【解决方案1】:

首先,我完全没有使用 telnet 的经验。

查看Python documentation on 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'

【讨论】:

    猜你喜欢
    • 2011-05-30
    • 2017-12-20
    • 2016-10-17
    • 2019-07-11
    • 1970-01-01
    • 2020-10-03
    • 2016-05-21
    • 2015-06-17
    • 2010-10-24
    相关资源
    最近更新 更多