我正在尝试找到一个月内互联网连接的整体停机时间的最佳方法。我的ISP有一个SLA,他们没有达到它,我希望能够将它们交给报告。我有一个运行的探针,该探针在无法连接时写入日志文件,何时可以再次连接。因此,数据看起来像是这样的:
UP - T0
DOWN - T1
UP - T3
so on
我试图在不编写太多代码的情况下找出一种方法,以便通过计算从下降状态回到UP状态所花费的时间来掌握此数据并弄清整个停机时间。如果没有一种简单的方法可以做到这一点,我认为我可以写点什么。有人知道执行此功能的模块吗?
假设您有时间戳,而不是日期,可以做:
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
将在下线和下一行
上拉每条线 -
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"