Linux
通過 cron (debian) 呼叫 pptp (pon) 失敗
我有一個 pptp VPN 連結從我的(debian)linux 伺服器撥號到遠端站點的 ISA2003 伺服器。
(兩端)的網際網路連接有點不可靠,所以我寫了一個小腳本來呼叫
pon myvpnlink
它,如果它檢測到連結已經斷開。如果我從 CLI 執行此腳本,它工作正常,但如果它通過 cron 呼叫,則 pon 呼叫似乎失敗。
我已經在 bash 和 perl 中重新編寫了這個,並且每個都有相同的問題。腳本被執行,它可以判斷VPN連結目前是up還是down,它呼叫
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
現在它已被更改,pptp 可以完美執行:-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 工作”的情況通常與路徑問題有關。
既然它不會受到傷害,您可以嘗試將其添加到您的 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