-1

こんにちは、次のbashスクリプトを書きました:

cat /home/xyz/wlandiscovery.sh
#!/bin/bash


DATE=`date +%d-%m-%Y__%H:%M:%S`

#Get the current standard interface e.g. eth0
INTERFACE=`route | grep '*' | awk '{print $8}'`

#Check if mac is available
if /usr/bin/arp-scan --interface $INTERFACE -l -r 5 | grep "xx:xx:xx:xx:xx:xx"
then
     echo -e "$DATE AVAILABLE!" >> /home/xyz/wlandiscovery.log
else
    echo -e "$DATE NOT AVAILABLE" >> /home/xyz/wlandiscovery.log
fi

exit 0

これを実行し、Mac が使用可能な場合、「AVAILABLE」と表示されます。デバイスを切断すると、「NOT AVAILABLE」と表示されます...したがって、期待どおりに実行されます。

しかし、5分ごとにCronjobとして実行すると、常に「利用できません」と表示されます:(Debianシステムの場合)

crontab -e

#......
*/5 * * * * /bin/bash /home/xyz/wlandiscovery.sh

ここで何が問題なのですか?

4

3 に答える 3

2
INTERFACE=`route | grep '*' | awk '{print $8}'`

私のシステムでは、ルートは/usr/sbin/route. /usr/sbinほとんどの場合、cron の PATH にありません。フル パスを指定します。

INTERFACE=`/usr/sbin/route | awk '$2 == "*" {print $8}'`
于 2013-10-25T14:54:48.960 に答える
0

Mac と Debian ボックスで次のコマンド ライン出力を比較します。route | grep '*' | awk '{print $8}'

それは同じですか?それは働くためにあるべきです。

次に、次のコマンド ライン出力を比較します。 /usr/bin/arp-scan --interface $INTERFACE -l -r 5 | grep "xx:xx:xx:xx:xx:xx"

于 2013-10-25T14:39:33.523 に答える