一旦传输的数据量达到预定的限制,我怎样才能使接口下降?

我在两个networking接口之间使用一个Linux机器作为路由器来路由本地stream量和从互联网。 有问题的互联网连接有一个确定的数据限额,超过这个是昂贵的。

理想情况下,我希望Linux框监视通过面向互联网接口传输的数据量(作为接收和传输数据的总和),并在超出限制时降低接口数量。 我一直无法为此find现成的工具。 我最好怎么办呢?

一种select是使用以下脚本每分钟运行一次的root cron作业(将输出附加到日志文件中):

 #!/bin/bash USAGE=$(awk '/wlan0/ {print $2+$10}' /proc/net/dev) USAGEMIB=$(echo "$USAGE" | awk '{printf "%0.1f", $1 / 1024 / 1024}') LIMIT=500 ABOVELIMIT=$(echo "$USAGEMIB" "$LIMIT"| awk '$1 > $2 {print "1"}') echo -e $(date)"\t"$USAGE"\t"$USAGEMIB" MiB" if [ "$ABOVELIMIT" == "1" ] then echo "Limit reached." /sbin/ifdown wlan0 fi 

这将在/proc/net/dev的相关条目中收到和传输的字节相加,将其作为字节和MiB打印到stdout(redirect到日志),并且如果用法超过硬编码到文件附近的文件顶部带来了连接。 这不是特别强大(特别是它没有任何error handling),但应达到预期的目的。