Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python脚本-记录icmp/ping响应失败-问题_Python_Python 2.7 - Fatal编程技术网

Python脚本-记录icmp/ping响应失败-问题

Python脚本-记录icmp/ping响应失败-问题,python,python-2.7,Python,Python 2.7,我正在尝试编写一个Python脚本,它将ping/icmp一个IP地址,并告诉我它是否处于活动状态。我这样做是因为我有间歇性的问题。我想ping,记录结果,睡一段时间,然后再次尝试ping。我尝试了一个while循环,但仍然出现如下错误: line 33, in (module) systemPing('192.168.1.1') line 30, in systemPing time.sleep(30) KeyboardInterrupt 我正在使用Python 2.6 理想情况下,我的问题

我正在尝试编写一个Python脚本,它将ping/icmp一个IP地址,并告诉我它是否处于活动状态。我这样做是因为我有间歇性的问题。我想ping,记录结果,睡一段时间,然后再次尝试ping。我尝试了一个while循环,但仍然出现如下错误:

line 33, in (module) systemPing('192.168.1.1')
line 30, in systemPing time.sleep(30)
KeyboardInterrupt
我正在使用Python 2.6

理想情况下,我的问题是如何循环使用这个方法/函数systemPing以及代码中有哪些错误?该脚本似乎可以工作,但当我点击ctrl-c时会出现这些错误

from subprocess import Popen, PIPE
import datetime, time, re 

logFile = open("textlog.txt", "a")

def getmyTime():
    now = datetime.datetime.now()
    return now.strftime("%Y-%m-%d %H:%M \n")

startTime = "Starting ..." + getmyTime()
logFile.write(startTime)
logFile.write("\n")

def systemPing(x):
    cmd = Popen("ping -n 1 " + x , stdout=PIPE)
    #print getmyTime()
    for line in cmd.stdout:
        if 'timed out' in line:
            loggedTime = "Failure detected - " + getmyTime()
            logFile.write(loggedTime)
        if 'Reply' in line:
            print "Replied..."
    logFile.close() 
    print "Sleeping 30mins ... CTRL C to end"
    time.sleep(30) #1800 is 30mins
    systemPing('192.168.1.1')

if __name__ =='__main__':
    systemPing('192.168.1.1')
任何帮助都会得到感激。
谢谢。

这本身并不是一个真正的错误,它只是Python在收到异常时的默认行为(当您按下CTRL-C时会发生这种情况)

如果你用…发送信号,你也会得到同样的结果


…或您希望它执行的任何操作。

这本身并不是一个错误,它只是Python在收到引发异常的命令(按下CTRL-C键时会发生这种情况)时的默认行为

如果你用…发送信号,你也会得到同样的结果


…或者你想让它做什么。

好的,我明白。我想知道为什么它似乎有效,但我却得到了我认为是错误的东西。我没有想过这种方法,但从未使用过。我将编辑脚本并进行测试。谢谢。try/except语句不会循环。它只运行一次,然后退出。在积极的方面;没有任何错误。@user2105764不应该循环。我以为您只是想允许CTRL-C在没有错误消息的情况下退出程序。你真的想禁用CTRL-C吗?我想让它通过systemPing函数循环。我将try/except语句嵌套在while-True循环中,看起来还可以,但需要测试longerOk,我理解。我想知道为什么它似乎有效,但我却得到了我认为是错误的东西。我没有想过这种方法,但从未使用过。我将编辑脚本并进行测试。谢谢。try/except语句不会循环。它只运行一次,然后退出。在积极的方面;没有任何错误。@user2105764不应该循环。我以为您只是想允许CTRL-C在没有错误消息的情况下退出程序。你真的想禁用CTRL-C吗?我想让它通过systemPing函数循环。我将try/except语句嵌套在while-True循环中,看起来还可以,但需要测试更长的时间
$ kill -INT <pid>
if __name__ =='__main__':
    try:
        systemPing('192.168.1.1')
    except KeyboardInterrupt:
        print 'Finished'