我想在它断开的时候启动pppd。我试图设置一个shell脚本,每1分钟运行一次,看看它是否关闭并重新连接。
我有一个名为vpn-check.sh
的bash脚本:
ping -c3 10.8.3.0 > pingreport
result=`grep "0 received" pingreport`
truncresult="`echo "$result" | sed 's/^\(.................................\).*$/\1/'`"
if [[ $truncresult == "3 packets transmitted, 0 received" ]]; then
pon VPNname
fi
当我直接从cli运行这个脚本时,它工作并启动ppp,但是当我通过cronjob(对于根用户)运行同样的脚本时,它不工作。
我试过下面的但没用
*/1 * * * * bash /root/vpn-check.sh > /root/cronlog.txt 2>&1
我试过下面的但没用
*/1 * * * * /root/vpn-check.sh > /root/cronlog.txt 2>&1
最后,我试着:
*/1 * * * * /usr/sbin/pppd call VPNname> /root/cronlog.txt 2>&1
不知道怎么回事。
最佳答案
我仍然不明白为什么有些脚本可以工作,而当cron根据日志被调用为正确的用户时,它不能工作。
我找到的唯一解决办法是:
crontab -e
并在顶部添加以下行(即使我正在按完整路径调用pppd守护进程):
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
关于linux - 从cron启动pppd不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17859410/