1
我正在嘗試編寫一個Python腳本,它會ping/icmp一個IP地址並告訴我它是否還活着。我這樣做是因爲我有一個間歇性問題。我想ping,記錄結果,睡一段時間,然後重新嘗試ping。我嘗試了一個while循環,但仍然得到這樣的錯誤:Python腳本 - 記錄失敗的icmp/ping響應 - 問題
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')
任何幫助總是讚賞。 謝謝。
好的,我明白了。我想知道爲什麼它似乎工作,但我得到我認爲是錯誤的。我沒有想到這種方法,但從未用過它。我將編輯腳本並測試。謝謝。 – user2105764 2013-05-02 15:13:09
try/except語句不循環。它只運行一次並退出。積極的一面,沒有任何錯誤。 – user2105764 2013-05-02 17:05:21
@ user2105764它不應該循環。我以爲你只是想讓CTRL-C在沒有錯誤信息的情況下退出程序。你真的想禁用CTRL-C嗎? – Aya 2013-05-02 17:08:16