0

教室でコンピューターの電源のオンとオフを自動化する 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 の間に既知の競合はありますか?

どんな助けでも大歓迎です!ありがとう

4

3 に答える 3

1

スクリプトを実行するバイナリを示す必要があります。

から

40 19 * * * root /root/skriptid/WOL/shutdown.sh

40 19 * * * root /bin/sh /root/skriptid/WOL/shutdown.sh

またはから来るものは何でもwhich sh

(この質問には1日1回答えていると思います)

于 2013-04-03T10:09:12.740 に答える
0

crontab にパスを追加する

PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin:/usr/local/bin
于 2013-06-27T11:50:55.613 に答える