Debian - WAKE ON LAN
Bana97 (Diskussion | Beiträge) |
(typo) |
||
| Zeile 7: | Zeile 7: | ||
| − | Bei [[Debian]] sieht das dann z. B. so aus: (einfach nach | + | Bei [[Debian]] sieht das dann z. B. so aus: (einfach nach ethtool suchen, um die passenden Stellen zu finden): |
<pre> | <pre> | ||
#!/bin/sh | #!/bin/sh | ||
Version vom 24. Mai 2007, 23:07 Uhr
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 ethtool 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