Python telnetlib连接到Scrapy Telnet读取统计信息

时间:2013-08-31 11:01:40

标签: python scrapy telnet telnetlib

我有一只Scrapy蜘蛛跑了几天。我通常会尝试检查统计数据,因为它已经刮了多少项。我只是在终端中运行跟随cmds,它给了我统计数据。

$ telnet [IP] [PORT]
>>> spider.name
alf-spider
>>> stats.get_stats()
...

现在我想用Python使用telnetlib做这个,但是我无法达到上述效果。以下是我的python代码。

#!/usr/bin/env python

import sys
import getpass
import telnetlib

HOST = "192.168.1.5"

def main():
    ports = ['6023']
    if len(sys.argv) > 1:
        ports = sys.argv[1].split(',')

    for port in ports:
        get_stats(port)

def get_stats(port):
    tn = telnetlib.Telnet(HOST, port)
    tn.write("spider.name\n")
    print tn.read_all()

if __name__ == '__main__':
    main()

上面的代码,如果运行只是挂起,直到强制关闭。我错过了什么?

1 个答案:

答案 0 :(得分:1)

这样可行。

#!/usr/bin/env python

import sys
import getpass
import telnetlib

HOST = "192.168.1.5"

def main():
    ports = ['6023']
    if len(sys.argv) > 1:
        ports = sys.argv[1].split(',')

    for port in ports:
        get_stats(port)

def get_stats(port):
    tn = telnetlib.Telnet(HOST, port)
    tn.read_until('>>>')
    tn.write("spider.name\n")
    print tn.read_until('>>>')
    tn.close()

if __name__ == '__main__':
    main()