-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可用,我会得到“可用”,如果我断开设备它会给出“不可用”......所以按预期运行。

但是,如果我每 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 机器上比较以下命令行输出: INTERFACE=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 回答
0

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

于 2013-10-25T14:55:27.197 回答