您好我写了以下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
这里的问题是什么?
答案 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它可以工作。