教室でコンピューターの電源のオンとオフを自動化する 2 つのスクリプトを作成しました。
どちらのスクリプトも MAC ID のリストを取得し、それらを使用して 1) コンピューターを起動し (wake コマンド)、2) コンピューターをシャットダウンします (net rpc shutdown)。
サーバーは FREEBSD で、ワークステーションは win7 です。
どちらのスクリプトも、「wake」と「net rpc shutdown」の部分を除いて似ています。両方のスクリプトは、(シェル経由で) 手動で実行すると完全に機能します。
WOL スクリプトのみが crontab で実行され、シャットダウン スクリプトも実行されますが、コンピューターには何も起こりません。
Cron ログは、スクリプトが処理されたことを示していますが、コンピューターは反応しません。
シャットダウン スクリプト:
#!/usr/local/bin/bash
#[ $# -eq 0 ] && { echo "Usage: $0 filename"; exit 1; } #muutujad sätitud?
list="/usr/local/etc/isc-dhcp_192.168.4"
erand="/root/skriptid/WOL/erand.txt"
# kontrollime, kas erandid ja list olemas
[ ! -f $list ] && { echo "EXIT! List puudu asukohas: $list"; exit 1; }
[ ! -f $erand ] && { echo "EXIT! Erandid puudu asukohas: $erand"; exit 1; }
#jätkame
while read line
do
IFS=' ' read -a array <<< "$line"
mac=`echo ${array[5]}|sed 's/;//'`
ip=`echo ${array[7]}|sed 's/;//'`
host=`echo ${array[1]}`
if grep -Fq "$ip" $erand
then
echo -e "Jatan vahele: HOST: $host IP: $ip MAC: $mac \n----" #exceptions
sleep 1
else
echo -e "Lülitan välja: HOST: $host IP: $ip MAC: $mac \n----"
net rpc SHUTDOWN -t 15 -f -C "Arvuti lulitub valja. Serveripoolne kask." -W luunja -U $host\\xx%xx -S $ip
sleep 1
fi
done < $list
クロンジョブ:
40 19 * * * root /root/skriptid/WOL/shutdown.sh
どちらのスクリプトもルートによって実行され、666 の権限があります。
ログ以外に cronjob の出力を確認する方法はありますか? cronjob と net rpc の間に既知の競合はありますか?
どんな助けでも大歓迎です!ありがとう