每当IP处于活动/活动状态时,如何远程登录和收集日志?

时间:2015-01-16 11:40:32

标签: python subprocess telnet ping os.system

PING:

import os   
ip=1.1.1.1
o=os.system("ping "+ip)
time.sleep(10)
print(o)
if res == 0:
 print(ip,"is active")

的Telnet:

tn = telnetlib.Telnet(IP)
tn.write(command+"\r\n")
f=open(filename,w)
while True:
 response = tn.read_until("\n")
 f.write(response)

这里,在IP之间下降。在那段时间我需要ping那个IP&无论什么时候出现,我都需要再次开始收集日志。我怎么能这样做?

实际上,我需要通过telnet收集日志(这是无限期的)。我能够做到。在此过程中,我正在收集日志的IP将关闭。所以,我需要跟踪这个IP(Ping)。每当IP再次出现时,我就会再次开始收集日志。如果你能帮助我,那就太好了。

我找到了解决方案:

tn=telnetlib.Telnet(IP)
    tn.write(command+"\r\n")
    f=open(filename,w)
    while (os.system("ping -n 1 IP") == 0):
     response = tn.read_until("\n")
     f.write(response)
    else:
        call some module for telnetting again/goto

     But, here is it possible to hide the console when we use (os.system(ping)). I know it can be done through subprocess. But since os.system is a one liner & very easy to verifY the result also.

1 个答案:

答案 0 :(得分:0)

也许pexpect是你正在寻找的东西?

此代码段将启动ping进程,并阻塞直到它看到"来自"的字节或者直到它超时(默认为1分钟):

import pexpect

def wait_until_online(host, timeout=60):
    child = pexpect.spawn("ping %s" % host)
    child.expect("bytes from", timeout)