Server Standby

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
flexcon
Beiträge: 1
Registriert: 12.11.2017 16:13:33

Server Standby

Beitrag von flexcon » 12.11.2017 21:06:46

Hi leute ich habe mir mit OMV3 einen Debian 8.9 server gebaut mit smb freigaben, pihole usw.
mein eigentliches problem war das der Server nicht in den Standby fährt wenn er nicht gebraucht wird.
Leider habe ich es nicht hinbekommen das zu erreichen.
Nun habe ich mir ein Bash script geschrieben was regelmäßig durch einen cronjob/crontab ausgeführt wird.

Dieses pingt z.b. jede minute (erstmal zum testen) einen bestimmten IP adressenbereich an und wenn kein host dort erreichbar ist geht das sstem mittels "pm-suspend" in den Standby.

Code: Alles auswählen

 #!/bin/bash

STATUSFILE="/tmp/powersaver-status"
SHUTDOWNFILE="/tmp/powersaver-status1"
SHUTDOWNSCRIPT="/usr/local/bin/shutdownscript.sh"
RANGE="192.168.178.20-100"
MINCLIENTS=0

NUMCLIENTS=`nmap -sP $RANGE -oG - | grep "Host" | wc -l`

echo "Es sind $NUMCLIENTS clients online. / $(date)" >> $STATUSFILE
echo "--------------------------------------------------------" >> $STATUSFILE
if [ $NUMCLIENTS -le $MINCLIENTS ]; then
echo "Es ist niemand da"
echo "Shutdown, my dear..."
echo "Es ist niemand da" >> $STATUSFILE
echo "Shutdown, my dear..." >> $STATUSFILE
echo "--------------------------------------------------------" >> $STATUSFILE
echo "0" >> $SHUTDOWNFILE
sudo sh $SHUTDOWNSCRIPT;
else
echo "Es ist/sind $NUMCLIENTS online"
echo "--------------------------------------------------------"
echo "1" >> $SHUTDOWNFILE
fi;

Zwei Probleme bestehen hier aber noch.

1.) es werden beim scan nicht alle geräte erkannt (vielleicht weil sie zu langsam antworten oder was weiß ich gerade bei meinen handys).
das führt dann dazu das der Server ausgeht obwohl er in benutzung ist. Ich habe mir vielleicht einen Zähler vorgestellt der z.b. nachdem das script zum dritten mal ausgeführt wird ..... dann erst entschieden wird ob der server in standby geht oder nicht und das auch nur wenn wärend der letzten 3 durchläufe kein gerät online war.
leider weiß ich nicht wie ich das umsetzen kann. ich hoffe da kann mir jemand helfen oder hat eine bessere idee.

2.) ich kann den Server nur wieder aufwecken wenn ich den Taster zum einschalten drücke oder wenn ich mittels meiner Fritzbox app auf dem hand einen Wake-on-lan befehl sende. Leider startet er nicht wenn ich mit meinem Pc auf eine Freigrabe zugreifen will.
(So war es früher bei meinem Windows Server mal). Leider geht es hier nicht. Hat dafür jemand eine Lösung?


danke schon mal an alle

Jana66
Beiträge: 3439
Registriert: 03.02.2016 12:41:11

Re: Server Standby

Beitrag von Jana66 » 18.11.2017 17:43:45

Willkommen im Forum!

Zu 1)
Du koenntest weitere nmap-Scan-Optionen als nur ping nutzen: OS-Test, Reaktion auf manipulierte Pakete, default host discovery etc.
The default host discovery done with -sn consists of an ICMP echo request, TCP SYN to port 443, TCP ACK to port 80, and an ICMP timestamp request by default.
https://nmap.org/book/man-host-discovery.html
https://wiki.ubuntuusers.de/nmap/ (Scan-Techniken)
Trotz komplett gesperrter Ports (auch ICMP/echo) erkennt nmap wenigstens, dass meine Firewall "up" ist.

Du koenntest auch ARP-Requests per Broadcast auf Ethernet-Layer mit Debianarping erzeugen und auswerten - so sich alle Hosts im gleichen Subnetz befinden:
Other options to the arping utility include the ability to send a broadcast arp using the -U option ...
http://linux-ip.net/html/tools-arping.html
https://packages.debian.org/de/stretch/arping
https://linux.die.net/man/8/arping
Ansonsten (verschiedene Subnetze) Proxy-ARP erforderlich.

Zeigt ARP-Cache aufgrund vorheriger ARP-Requests:

Code: Alles auswählen

ip neighbor show
aus Debianiproute2 http://linux-ip.net/html/tools-ip-neighbor.html
Fuer aktuelle Ergebnisse vor ping (oder nmap) Cache loeschen:

Code: Alles auswählen

 ip neighbor flush dev <IF>
Zu 2)
Da faellt mir nur ein, dass ein Wake-on-LAN-Paket aufgrund irgendeines Triggers vorher gesendet wird. Per Script-Aufruf WoL, Wartezeit wegen Booten, danach Zugriff auf Freigabe, Starter fuer Script?
Wenn keiner was sagt, wird sich nichts ändern. Wenn alle nur reden ebenfalls nicht.

Antworten