gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 18:59:36 25 4
gpt4 key购买 nike

我正在尝试编写一个 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 在收到 SIGINT 时的默认行为。 (这就是当您按 CTRL-C 时发生的情况),引发 KeyboardInterrupt异常。

如果您使用 kill(1) 发送信号,您会得到同样的结果,就像...

$ kill -INT <pid>

如果你想处理它,那么你可以将代码更改为......

if __name__ =='__main__':
try:
systemPing('192.168.1.1')
except KeyboardInterrupt:
print 'Finished'

...或者任何你想要它做的事情。

关于Python 脚本 - 记录失败的 icmp/ping 响应 - 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16340563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com