Linux Server vom Windows Client hoch – und herunterfahren
Nachdem ich mir einen Unbuntu-Server für den Plex Media Server installiert habe, benötige ich jetzt zwei Sachen, die das Leben einfacher machen:
1. Einschalten vom Windows Client aus
2. Ausschalten vom Windows Client aus
Die erste Aufgabe ist recht simpel:BIOS –> Netzwerkkarteneinstellungen –> Wake-On-Lan aktivieren.
Danach auf dem Client WakeOnLAN205 herunterladen, den Server dort eintragen – fertig!
Wenn ich jetzt den PLex Media Server wecken will, muss ich nur das Tool starten und ihn aufwecken 🙂
2. Ausschalten des Ubuntu Servers vom Windows Client aus (per Doppelclick):
Üblicherweise erfolgt das Herunterfahren über eine putty Sitzung.
Allerdings bin ich faul genug eine bequemere Lösung dafür zu suchen.
Es gibt zwar Lösungsansätze mit plink (siehe putty), aber dabei legt man irgendwie immer Benutzername und Passwort im Batch ab.
Das sollte doch auch anders gehen 🙂
Lösung:
Klopf – klopf … leg dich schlafen!
Das Zauberwort heißt „Portknocking“. Dabei „klopft“ man bestimmte Ports des Servers ab und löst damit eine Reaktion aus. In diesem Fall fährt der Server herunter. Normalerweise wird das eher dazu verwendet eine Firewallregel zu aktivieren, die einen Zugriff mit ssh zulässt und anschließend auch wieder verbietet.
Installation:
apt-get update
apt-get upgrade
apt-cache search knockd findet dann „knockd – small port-knock daemon“
apt-get install knockd
Konfiguration:
Den Dienst aktivieren:
vi /etc/default/knockd
dort muss der Eintrag START_KNOCKD=0 auf START_KNOCKD=1 geändert werden.
Sonst startet der Dienst nicht.
Die Konfiguration anpassen:
vi /etc/knockd.conf
sieht bei meinem Test jetzt dann so aus
——————-schnipp——————————-
[options]
UseSyslog
#[openSSH]
# sequence = 7000,8000,9000
# seq_timeout = 5
# command = /sbin/iptables -A INPUT -s %IP% -p tcp –dport 22 -j ACCEPT
# tcpflags = syn
#[closeSSH]
# sequence = 9000,8000,7000
# seq_timeout = 5
# command = /sbin/iptables -D INPUT -s %IP% -p tcp –dport 22 -j ACCEPT
# tcpflags = syn
[shutdown]
sequence = 7007:tcp,8008:udp,9009:tcp
seq_timeout = 2
command = /sbin/shutdown -P +1
tcpflags = syn
—————- schnapp ———————————–
Erklärung:
Klopfe ich auf den Ports 7007 (TCP), 8008 (UDP) und 9009 (TCP) an, fährt der Server nach einer Minute Wartezeit herunter.
Test:
Um das Testen zu können kann man den Dienst anhalten und dann starten mit
knockd -v -D
Damit wird einem angezeigt, welche Konfigurationseinträge man verwendet und welche „Klopfzeichen“ aktuell angenommen werden.
Die Clientseite:
Für den Windows-Client verwende ich den knock-win32-port.
Download über http://www.zeroflux.org dort den Native Win32 Client herunterladen.
Nach dem Entpacken findet man im Unterordner „Release“ eine knock.exe.
Die habe ich einfach nach C:\windows\System32 kopiert, um nicht immer den Pfad angeben zu müssen oder eine neue PATH-Variable setzen zu müssen.
Jetzt noch ein kleines Batch:
—————– Server Shutdown Batch Anfang —————————————————
@ECHO OFF
:: Batch to shutdown Plex Media Server from Windows PC
:knock
knock plexserver 7007:tcp 8008:udp 9009:tcp
—————– Server Shutdown Batch Ende —————————————————
Für einen Test kann man das auch einfach mal in der CMD eingeben:
knock plexserver 7007:tcp 8008:udp 9009:tcp
Hat man den knockd auf dem Server im –verbose –debug laufen, dann sieht man jetzt die einkommenden Klopfzeichen und die Meldung, dass der Server in einer Minute heruntergefahren wird.
Bei einigen Systemen wird wohl der Dienst nicht automatisch gestartet.
Ich verwende hier Unbuntu Server 13.0 und knockd 0.5 – da läuft alles wie erwartet.