Voila uns vision legèrement différente ce basant sur les logs trouvés dans le DHCP.
ce script permet de réveillé un host via son nom, ou via son adresse mac, ou de réveiller tout les hosts du réseau.
#!/bin/sh
# /// revision-script 1.0 \\\
# Author : Clément ROGER
# Author : Be4free.com
# Author : <clement.be4free AT gmail DOT com>
# Licence : Under GPL
# If you modify this script or if you want to add functions please email
# your version to clement.be4free AT gmail DOT com
function wol_install {
if [ ! -d "/var/lib/wol/" ] ; then mkdir -p /var/lib/wol/ ; chmod 640 /var/lib/wol/ ; fi
if [ ! -f "/var/lib/wol/discover" ] ; then touch /var/lib/wol/discover ; chmod 640 /var/lib/wol/discover ; fi
}
function wol_list {
mac_list=`cat /var/lib/wol/discover`
for mac_address in $mac_list ; do
echo $mac_address | {
IFS=";" read mac name
echo $name
}
done
}
function wol_discover {
mac_list=`cat /var/log/syslog | grep dhcpd | grep DHCPREQUEST | sed 's/^.*from//' | cut -d " " -f 2,3 | sed 's/\ (/;/' | sed 's/)//' | sort | uniq`
for mac_address in $mac_list ; do
cat /var/lib/wol/discover | grep -x $mac_address >> /dev/null 1>&1
if [ "$?" == 1 ] ; then
echo $mac_address >> /var/lib/wol/discover
fi
done
}
function wol_wake {
argv=$1
cat /var/lib/wol/discover | grep $argv | {
IFS=";" read mac name
ether-wake $mac
}
}
if [ ! -d "/var/lib/wol/" ] || [ ! -f "/var/lib/wol/discover" ] || [ ! -r "/var/lib/wol/discover" ] && [ $1 != "install" ] ; then
echo "Error : $0 db are not installed, please type '$0 install'"
exit 1;
fi
case $1 in
install)
wol_install
;;
list)
wol_list
;;
discover)
wol_discover
;;
wakeall)
wol_discover
mac_list=`cat /var/lib/wol/discover | cut -d ";" -f 1`
for mac_address in $mac_list ; do
wol_wake $mac_address
done
;;
wake)
if [ "$1" != "" ] ; then
cat /var/lib/wol/discover | grep $2 >> /dev/null 2>&1
if [ "$?" != "0" ] ; then
echo "undiscovered host, please try '$0 discover' first"
exit 1;
fi
wol_wake $2
else
echo "Usage : $0 wake [HOST or MAC_ADDRESS]"
exit 1;
fi
;;
*)
echo "Usage : $0 list|dicover|wakeall|wake [HOST or MAC_ADDRESS]"
;;
esac
a placer dans /usr/local/sbin/wakeonlan en 750
installer via /usr/local/sbin/wakeonlan install
Usage : /usr/local/sbin/wakeonlan list|dicover|wakeall|wake [HOST or MAC_ADDRESS]