Automatisches Herunterfahren, wenn für einen "Homeserver" kein "echter" Netzwerkverkehr vorhanden ist

426
BubbaLebba

Hallo, ich habe gerade meinen Homeserver installiert. Ich verwende Folgendes:

  • TvHeadend
  • PyLoad
  • NzbGet
  • Samba

Ich plane das Herunterfahren, wenn die Up / Downstream-Funktion dieser Dienste weniger als 1 Mb / s (Bandbreite) beträgt oder der Traffic in den letzten 10 Minuten unter 100 MB lag.

Also meine Frage ist, ob es irgendwelche Tools gibt, um den Verkehr leicht zu überwachen und durchzulassen, und dann lass ich es einfach mit einem Skript auslesen, das ich regelmäßig aufgerufen habe (alle 10 Minuten oder so mit cronjob) und dann einfach überprüfen, ob die Verwendung ist zu niedrig und in diesem Fall heruntergefahren.

Ich verwende Archlinux, wenn es darauf ankommt.

0

1 Antwort auf die Frage

1
MattBlissett

Ich brauchte dazu ein Skript, also schrieb ich folgendes:

#!/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)' 

Dann verwenden Sie es wie until-low-traffic -i 60 -m 1M && shutdown -h 1oder was auch immer.

(Es könnte viel einfacher gemacht werden, wenn Sie die Parameter festlegen und die Ausgabe nicht formatieren.)