Bei den Werkzeugen von Remmina handelt es sich um Shell-Skripte. Das bietet die Möglichkeit, Anpassungen vorzunehmen oder eigene Werkzeuge hinzuzufügen. So lässt sich beispielsweise “Wake on LAN” einfach ergänzen.
Zu beachten ist, das die MAC-Adresse des Servers benötigt wird, daraus ergibt sich, das man diese in der Profil-Konfiguration irgendwo hinterlegen muss. Ein ggf. ungenutztes Feld bietet sich da an, beispielsweise “Befehl vor der Verbindung ausführen”. Der dortige Wert wird als Variable “$precommand” an das Script übergeben.
Eine Datei unter “/usr/share/remmina/external_tools/remmina_wakeonlan.sh” anlegen und ausführbar machen. Folgendes einfügen:
!/bin/sh . $(dirname $0)/functions.sh settitle wakeonlan $precommand
Unter Werkzeuge wird dann “wakeonlan.sh” angezeigt, das vorangestellte “remmina_” wird automatisch abgeschnitten oder unterschlagen wenn man so möchte.
Automatisches Wake on LAN vor der Verbindung
Interessant kann eine Kombi sein, gemeint ist via “Befehl vor der Verbindung ausführen” erstmal den Server anpingen, ist dieser nicht erreichbar dann “wakeonlan” ausführen, warten und nochmal von vorne. Sobald der Ping erfolgreich ist, wird das Skript beendet und die Verbindung aufgebaut.
Im Profil unter “Befehl vor der Verbindung ausführen” folgendes einfügen:
/usr/share/remmina/external_tools/remmina_wakeonlan.sh <MAC-Adresse>
Das eigentliche Skript sieht so aus:
#!/bin/sh . $(dirname $0)/functions.sh settitle while ! ping -c3 $server # &>/dev/null do wakeonlan $1 sleep 5s done
Oder beides zusammen…
…soll heißen: Ein Skript, das sowohl für aus den Werkzeugen als auch für die Automatik verwendet werden kann:
#!/bin/sh . $(dirname $0)/functions.sh settitle macaddress=$1 if [ -z "$macaddress" ] then wakeonlan $precommand else while ! ping -c3 $server # &>/dev/null do wakeonlan $macaddress sleep 5s done fi
Wird das Skript ohne Argument gestartet, also ist unter “Befehl vor der Verbindung ausführen” nur eine MAC-Adresse hinterlegt, dann wird direkt “wakeonlan” ausgeführt.
Wird das Skript hingegen mit einem Argument gestartet, also ist unter “Befehl vor der Verbindung ausführen” wie oben beschrieben der Pfad samt Skriptname und MAC-Adresse hinterlegt, dann wird der Server angepingt, bei nicht-erreichen “wakeonlan” ausgeführt und gewartet bis das Dieser anpingbar ist.
Quellen:
StackExchange – Unix & Linux – Bash ping script file for checking host availability
Ubuntuusers – Wiki – Bash-Skripting-Guide für Anfänger
Lifewire – How to Use the Linux Sleep Command to Pause a BASH Script
nixCraft – Bash Shell Find Out If a Variable Is Empty Or Not
Ryans Tutorials – If Statements!
Verheiratet, Vater von zwei Kindern, eines an der Hand, eines im Herzen. Schon immer Technik-Freund, seit 2001 in der IT tätig und seit über 10 Jahren begeisterter Blogger. Mit meiner Firma IT-Service Weber kümmern wir uns um alle IT-Belange von gewerblichen Kunden und unterstützen zusätzlich sowohl Partner als auch Kollegen.
Danke für den Gedankenanstoß.
Bei mir heißt der wakeonlan Befehl wol und zudem ist zu beachten das auf Linux die mac Adresse mit Doppelpunkten separiert ist und Buchstaben klein geschrieben werden.
Ich habe das Script erweitert damit das Ping funktioniert falls der Servername nicht nicht aufgelöst werden kann:
————————————————————————————–
#!/bin/sh
. $(dirname $0)/functions.sh
settitle
macaddress=$1
server=`arp -a | grep $macaddress | awk ‘{ print $2 }’ | grep -o 192.168.100.[0-2][0-9]`
if [ -z “$macaddress” ]
then
wakeonlan $precommand
else
while ! ping -c3 $server # &>/dev/null
do
wakeonlan $macaddress
sleep 5s
done
fi
—————————————————————————————–
So funktioniert das bei mir problemlos