我的问题是我想要做这样的事情在Linux控制台输出捕捉到Python脚本
的telnet 192.168.255.28> process.py 即我想做些改造与控制台的telnet输出使用python脚本。我看到Popen在这种情况下的python,但我不明白我怎么能从telnet获得输入,如果它不停止所有的时间.. 请有任何想法。
我的问题是我想要做这样的事情在Linux控制台输出捕捉到Python脚本
的telnet 192.168.255.28> process.py 即我想做些改造与控制台的telnet输出使用python脚本。我看到Popen在这种情况下的python,但我不明白我怎么能从telnet获得输入,如果它不停止所有的时间.. 请有任何想法。
你考虑过telnetlib吗?这看起来好像你正在寻找什么?
如果你能适应你的解决方案,telnetlib似乎是正确的做法 - 对xitrium +1。
这就是说,不过,如果你在远程登录的输出通过管道进入你的Python脚本死心塌地,这将是未来在标准这意味着你可以做这样的事情:
try:
while True:
line = raw_input()
do_stuff(line)
except EOFError:
pass # the telnet process finished; there's no more input
它将从telnet获取输出,一次一行。如果你想更好地控制,你可以使用sys.stdin.read()
获得输入。
重要提示:在你的问题中,你说(例如)telnet 192.168.255.28 > process.py
。这是错误的;不是将输出从telnet输入到脚本中,而是将输出保存到文件中,覆盖您的脚本。你想要的是一个管道:telnet 192.168.255.28 | process.py
。
正如xitrium提到的,如果您使用telnetlib会更好。你可以省去整个一塌糊涂的外壳重定向等。
如果你做了类似telnet foo | process.py
的事情,你可以阅读你的程序stdin(sys.stdin
)来获取telnet程序的输出。当你快乐时,你可以退出并终止管道。如果您试图将telnet
程序作为解释程序的子进程打开,将会使用subprocess.Popen
。我不确定你想要那个。
在任何情况下,telnetlib似乎是正确的方式。如果你只是想要一个输出文本处理器,考虑perl。它的优势在于这个方向。
我正在使用linux telnet命令,并希望得到并将其转换出来放在python脚本。 – sandra 2010-05-13 07:49:10
+1。正确回答错误的问题。 :) – 2010-05-13 08:07:49