Bash脚本不能用作cronjob

时间:2013-10-25 14:25:49

标签: bash cron crontab

您好我写了以下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”,如果我断开设备,它会“不可用”...所以按预期运行。

但如果我每隔5分钟就像Cronjob一样运行它,我总是“不可用”:(在Debian系统上)

crontab -e

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

这里的问题是什么?

3 个答案:

答案 0 :(得分:2)

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

在我的系统上,路线为/usr/sbin/route/usr/sbin很可能不在cron的PATH中。指定完整路径:

INTERFACE=`/usr/sbin/route | awk '$2 == "*" {print $8}'`

答案 1 :(得分:0)

在Mac和Debian框中比较以下命令行输出: INTERFACE = route | grep '*' | awk '{print $8}'

它是一样的吗?它应该是为了工作。

然后,比较命令行输出: / usr / bin / arp-scan --interface $ INTERFACE -l -r 5 | grep“xx:xx:xx:xx:xx:xx”

答案 2 :(得分:0)

好的,现在正在工作。似乎$ PATH与crontab在我的终端提示中不等于$ PATH ...如果我做/ sbin / route和/ usr / bin / awk和/ bin / grep它可以工作。