Linux

通過 cron (debian) 呼叫 pptp (pon) 失敗

  • June 5, 2015

我有一個 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

引用自:https://serverfault.com/questions/98280