2014-09-22 47 views
-1

如果我在網絡設備上的策略映射上看到數字增加,我有一個腳本向我發送電子郵件。如果符合條件,發送電子郵件,然後睡一個小時

這對我很好。但是現在我需要它在發現超時(沒問題,可以每分鐘運行一次cron作業)時發郵件給我 - 但是當它看到超時時,我需要腳本在一小時後不運行我不會被郵件淹沒。因此,我希望腳本每隔一分鐘左右檢查一次網絡設備,但每當它看到超出時,就停止運行。

想不到我的(初學者)頭頂怎麼去做這件事。

我的代碼通過pexpect從網絡設備中提取統計信息並將其轉儲到1.txt中。然後,我通過正則表達式去掉我需要的東西,然後與之前的運行進行比較。這不是優雅,我知道,但我是一個初學者...

我已經刪除了一堆的代碼,但這裏的關鍵是它。 2.txt和3.txt包含數字 - 如果新數字更高,則會通過電子郵件發送給我。

getexceeds = open("1.txt", "r").readlines()[12] 
output = re.findall(r"\d+", getexceeds)[1] 
with open("2.txt", "w") as outp: 
    outp.write(output) 

newnumber = open("2.txt", "r").readlines()[0] 
oldnumber = open("3.txt", "r").readlines()[0] 

if oldnumber < newnumber: 
    send_email() 
else: 
    print "same" 

src_file = "2.txt" 
dst_file = "3.txt" 
shutil.copy(src_file, dst_file) 

感謝這裏的任何幫助,我還是讓我圍繞腳本頭和欣賞任何幫助!

+0

是否有可能以秒爲單位獲取時間(時間戳格式),然後簡單計算出一小時內有3600秒,並且自上次發送電子郵件以來的時間結束後,再次發送? – 2014-09-22 15:17:56

回答

1

可能的解決方案是使用時間庫。它允許你做很多與時間不同的東西,如:

time.sleep(secs) 

在這方面的文章,可以發現here(當然,用幾句話),但它在本質上只是暫停程序的給定數量秒。考慮到有3600秒,一小時只是做:

time.sleep(3600) 

注:此暫停60分鐘的程序,這意味着你將無法在這段時間運行任何代碼。

+1

謝謝你。我應該用我的頭。所以我把腳本放在一個簡單的while循環中,然後在發送電子郵件語句之後添加time.sleep語句......這很完美。謝了哥們。 – 2014-09-23 09:04:40

+0

@captainyossarian沒問題!這個網站究竟是幹什麼的=) – 2014-09-23 12:19:25

相關問題