当通过cron(debian)调用时,pptp(pon)失败

我有一个从我的(debian)Linux服务器的pptp VPN链接拨号到远程站点的ISA2003服务器。

(两端)的networking连接有点不礼貌,所以我写了一个脚本来调用pon myvpnlink如果它检测到链接已经pon myvpnlink

这个脚本工作正常,如果我从CLI运行它,但如果它通过cron调用,然后pon调用似乎失败。

我用bash和perl重写了这个,每个都有相同的问题。 该脚本被执行,它可以判断VPN链接是否正在运行,它会调用pon来调用pppd,从而导致连接失败。 如果我然后从CLI执行该脚本它很好。

任何想法都会非常感激,现在正在做我的盒子。

 #Syslog (on a failure): Dec 30 17:02:01 LogServer /USR/SBIN/CRON[4530]: (root) CMD (/bin/bash /root/scripts/vpnup.bash >> /root/scripts/vpn.log) Dec 30 17:02:01 LogServer pppd[4542]: pppd 2.4.4 started by root, uid 0 Dec 30 17:02:01 LogServer pppd[4542]: Couldn't get channel number: Input/output error Dec 30 17:02:01 LogServer pppd[4542]: Exit. #Cron Line * * * * * root /bin/bash /root/scripts/vpnup.bash >> /root/scripts/vpn.log 

更新:

现在工作正常。 我通过/etc/cron.d/vpn调用我的cron项目,原来是这样的:

 MAILTO=root * * * * * root /bin/bash /root/scripts/vpnup.pl >> /root/scripts/vpn.log 

现在它已经改变了,PPT完美地工作: – D

 MAILTO=root SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin * * * * * root perl /root/scripts/vpnup.pl >> /root/scripts/vpn.log 

非常感谢贾斯汀给的例子:)

你发布的错误信息有点类似于pppd中的错误,但是你所描述的“从shell而不是从cron开始”的情况通常与path问题有关。

因为它不能伤害,你可以尝试添加到您的crontab的顶部?

 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 

编辑:你可以使用的一个解决方法是,如果它总是从shell工作,有另一个短的脚本,做一个

 while true;do vpnup.sh;sleep 1m;done >> log 

那么你可以用类似的东西在屏幕上开始

 screen -S vpn -d -m thatscript 

感谢这对我工作! 我的configuration现在看起来像这样…

 #!/bin/bash result=`ifconfig | grep ppp0 | wc -l` if [[ $result != "1" ]]; then pon hma sleep 10 route add -net 0.0.0.0 ppp0 #Routes all traffic on the server through VPN (useful) fi 

而我的克朗…

 # mh dom mon dow command SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin * * * * * /home/foo/restart_vpn.sh