Hallo!
Ich möchte einen Samba-Server einrichten, der nur bei Bedarf aktiv ist und sich selbstständig in den Ruhezustand begibt, wenn er nichts zu tun hat. Das Skript funktioniert an sich sehr zuverlässig, danke dafür.
Nur geht der Server auch dann nicht in den Ruhezustand, wenn kein PC im Netzwerk mehr aktiv ist, weil Samba offenbar keine Verbidnungen trennt. Also spätestens bei dieser Abfrge
1 2 3 4 5 6 | if [ "x$SAMBANETWORK" != "x" ]; then if [ `/usr/bin/smbstatus -b | grep $SAMBANETWORK | wc -l ` != "0" ]; then logit "samba connected, auto suspend terminated" return 1 fi fi |
bricht er das Skript ab und der Server läuft weiter. Trenne ich die Verbindung manuell (kill [PID]), schaltet das Skript beim nächsten Durchlauf den Server zuverlässig ab.
Das Problem ist also, dass Samba die Verbindungen aufrecht erhält, auch wenn die jeweiligen Clients längst aus sind. Liegt das an der Samba-Konfiguration oder muss ich clientseitig etwas einstellen, so dass z.B. Windows die Verbindung explizit trennt und das dem Server mitteilt?
Könnte man alternativ dazu das Skript so modifizieren, dass es aktive Samba-Verbindungen auf eine andere Weise erkennt?
Ansonsten bliebe mir nur übrig den Codeblock komplett zu deaktiveren und mich auf den Ping zu verlassen. Je nach dem, was der Server später noch für Aufgaben haben wird, kann das aber keine gute Lösung sein (Bsp. Verbindung über VPN).
P.S.: Vorher hatte ich das Problem, dass manchmal noch User per SSH verbunden waren und dadurch der Server nicht schlafen gehen konnte. Das konnte ich mit diesem Hinweis beheben: http://www.cyberciti.biz/faq/linux-unix-login-bash-shell-force-time-outs/
Dadurch werden inaktive User nach einer definierten Dauer ausgeloggt.
Gruß!