соединить телнет с питоном - PullRequest
0 голосов
/ 14 октября 2011

Я пытался соединить bbs с библиотекой python "telnetlib", попытаться заставить робота ответить

сообщение. Пока я отвечал на сообщение, робот возвращает более 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

1 Ответ

0 голосов
/ 04 декабря 2011

Во-первых, у меня нет абсолютно никакого опыта работы с 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'
...