Debian - WAKE ON LAN
Aus VDR Wiki
Inhaltsverzeichnis |
Beschreibung
Für Debian gibt es die Pakete etherwake und wakeonlan. Etherwake kann nur vom root ausgeführt werden, wakeonlan von allen Benutzern.
Ich habe diese Zeile einfach in meine /etc/init.d/networking an entsprechender Stelle nach dem Aktivieren des Netzwerks gesetzt. Falls es noch Fragen gibt, könnt Ihr mich auch direkt anmailen: Thorsten at Gehrig.de
Bei Debian sieht das dann z. B. so aus: (einfach nach ethool suchen, um die passenden Stellen zu finden):
#!/bin/sh # # manage network interfaces and configure some networking options PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin if ! [ -x /sbin/ifup ]; then exit 0 fi spoofprotect_rp_filter () { # This is the best method: turn on Source Address Verification and get # spoof protection on all current and future interfaces. if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $f done return 0 else return 1 fi } spoofprotect () { echo -n "Setting up IP spoofing protection: " if spoofprotect_rp_filter; then echo "rp_filter." else echo "FAILED." fi } ip_forward () { if [ -e /proc/sys/net/ipv4/ip_forward ]; then echo -n "Enabling packet forwarding..." echo 1 > /proc/sys/net/ipv4/ip_forward echo "done." fi } syncookies () { if [ -e /proc/sys/net/ipv4/tcp_syncookies ]; then echo -n "Enabling TCP/IP SYN cookies..." echo 1 > /proc/sys/net/ipv4/tcp_syncookies echo "done." fi } doopt () { optname=$1 default=$2 opt=`grep "^$optname=" /etc/network/options` if [ -z "$opt" ]; then opt="$optname=$default" fi optval=${opt#$optname=} if [ "$optval" = "yes" ]; then eval $optname fi } case "$1" in start) doopt spoofprotect yes doopt syncookies no doopt ip_forward no echo -n "Configuring network interfaces..." ifup -a ethtool -s eth0 wol g echo "done." ;; stop) if sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts | grep -q "^/ nfs$"; then echo "NOT deconfiguring network interfaces: / is an NFS mount" elif sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts | grep -q "^/ smbfs$"; then echo "NOT deconfiguring network interfaces: / is an SMB mount" elif sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\2/p' /proc/mounts | grep -qE '^(nfs[1234]?|smbfs|ncp|ncpfs|coda|cifs)$'; then echo "NOT deconfiguring network interfaces: network shares still mounted." else echo -n "Deconfiguring network interfaces..." ifdown -a --exclude=lo echo "done." fi ;; force-reload|restart) doopt spoofprotect yes doopt syncookies no doopt ip_forward no echo -n "Reconfiguring network interfaces..." ifdown -a --exclude=lo ifup -a ethtool -s eth0 wol g echo "done." ;; *) echo "Usage: /etc/init.d/networking {start|stop|restart|force-reload}" exit 1 ;; esac exit 0
Saubere Debian-Lösung
Besser als das Ändern von vorhandenen Dateien ist es, einen extra Mechanismus einzubauen. In Debian (Sarge) wird der runlevel 0 zum Abschalten des Systems benutzt. Daher wird ein link in /etc/rc0.d erzeugt der auf das Skript in /etc/init.d/wake_on_lan zeigt. (Erst das Skript erzeugen!)
cd /etc/rc0.d ln -s /etc/init.d/wake_on_lan S80wake_on_lan
Und hier das Skript wake_on_lan. Er muß nach /etc/init.d gespeichert werden und ausführbar sein. Dies geht mit "chmod +x wake_on_lan", wenn man im Verzeichnis ist.
#! /bin/sh # # Ensures that Wake on Lan works # #PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin set -e case "$1" in stop|start|restart|force-reload|reload) echo -n "Turn on: Wake on Magic Packet" /usr/sbin/ethtool -s eth0 wol g echo ;; *) # N=/etc/init.d/hwtools # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 exit 1 ;; esac exit 0
Falls ethtool noch nicht installiert ist, muß man dies jetzt nachholen:
apt-get install ethtool
Alternative /etc/network/interfaces
ethtool kann man auch einfach als pre-down oder post-up (post-down, pre-up haben in meinem Fall nicht funktoniert) in die interfaces-Konfiguration einbauen:
auto eth0 iface eth0 inet dhcp pre-down ethtool -s eth0 wol g