您好,我刚刚安装了我的家庭服务器,我正在使用以下内容:
- 电视头端
- 加载
- 閱讀
- 桑巴
如果这些服务的上行/下行速度低于 1 Mb/s(带宽)或过去 10 分钟的流量低于 100mb,我计划关闭。
所以我的问题是是否有任何工具可以轻松监控流量并通过,然后让我简单地用我设置的脚本读取并定期调用(每 10 分钟左右使用 cronjob),然后简单检查使用率是否太低并在这种情况下关闭。
如果有必要的话我会使用 Archlinux。
答案1
我需要一个脚本来执行此操作,因此我写了这个:
#!/bin/bash -e
#
# Wait until there's less than -t of traffic in an interval of -i seconds.
#
fmt() {
numfmt --to=si --suffix=B $1
}
while getopts "i:m:" opt; do
case $opt in
i)
interval=$OPTARG
;;
t)
minimum2=$(numfmt --from=si $OPTARG)
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
esac
done
shift $((OPTIND-1))
bytes=$(< /sys/class/net/eth1/statistics/rx_bytes )
minimum=-1
sleep $interval
while [[ $(( $(< /sys/class/net/eth1/statistics/rx_bytes ) - $bytes )) -gt $minimum ]]; do
minimum=$minimum2
rate=$(( $(< /sys/class/net/eth1/statistics/rx_bytes ) - $bytes ))
echo $(date +%Y%m%d-%H%M%S)': received' $(fmt $rate) '('$(fmt $(( $rate / $interval )))'/s)'
bytes=$(< /sys/class/net/eth1/statistics/rx_bytes )
sleep $interval
done
echo "End: received" $(fmt $(( $(< /sys/class/net/eth1/statistics/rx_bytes ) - $bytes ))) '('$(fmt $(( $rate / $interval )))'/s)'
然后像其他方式一样使用它until-low-traffic -i 60 -m 1M && shutdown -h 1
。
(如果您修复参数并且不格式化输出,它会变得简单得多。)