2017-09-18 83 views
0

我正在嘗試查找一個月內查找Internet連接整體停機時間的最佳方法。我的ISP有一份SLA,但他們沒有見面,我希望能夠把它們交給報告。我有一個正在運行的探針,它在無法連接時以及何時可以再次連接時寫入日誌文件。因此,該數據是這樣的假設:Python使用時間戳計算Internet停機時間

UP - T0 
DOWN - T1 
UP - T3 
so on 

我試圖找出一個方法,而無需編寫太多的代碼,有一個腳本來對這些數據運行,並通過計算花費的時間計算整體停工時間從DOWN狀態返回到UP狀態。如果沒有簡單的方法來做到這一點,我認爲我可以寫些東西來做到這一點。有誰知道一個模塊執行此操作嗎?

+1

見'datetime'模塊 – user3080953

+2

是T0,T1等.. UTC時間戳(即秒從時代)還是他們的日期時間字符串?你可以發佈樣本嗎? – MrE

+0

你在問什麼?如果它的秒然後只是使用簡單的數學運算'elapsed_seconds = time1-time0' ...與日期時間一樣容易...除了你將不得不解析字符串到一個實際的數據時間 –

回答

0

假設你有時間戳,而不是日期,在bash,那麼你可以這樣做:

sed -n '/DOWN/,$p' test.txt 
| awk -F"-" '{print $2}' 
| paste - - 
| awk -F"\t" '{print $2-$1}' 
| awk '{ sum+=$1} END {print sum}' 
  • sed -n '/DOWN/,$p' test.txt將拉動與DOWN每一行和下一行
  • awk -F"-" '{print $2}' | paste - -將在一個打印2號線
  • | awk -F"\t" '{print $2-$1}'做減法
  • awk '{ sum+=$1} END {print sum}'總和所有數字

test.txt

UP - 123 
DOWN - 124 
UP - 127 
DOWN - 130 
UP - 140 

我得到的名單:

3 
10 

,然後你只需要添加數字

awk '{ sum+=$1} END {print sum}' 預期返回13。

如果沒有時間戳,你可以得到一個從日期字符串

date -j -f "%a %b %d %T %Z %Y" "$DATE" "+%s"