我正在尝试找到一个月内找到我的互联网连接整体停机时间的最佳方法。我与我的ISP有一个SLA,他们没有满足它,我希望能够将它们交给报告。我有一个运行的探测器,当它无法连接时以及何时可以再次连接时写入日志文件。所以数据假设如下:
UP - T0
DOWN - T1
UP - T3
so on
我试图想出一种方法,不用编写太多代码,让脚本运行这些数据,并通过计算从DOWN状态回到UP状态所花费的时间来计算整体停机时间。如果没有一种简单的方法可以做到这一点,我想我可以写一些东西来做到这一点。有谁知道执行此操作的模块?
答案 0 :(得分:0)
假设你有时间戳,而不是日期,你可以这样做:
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"