Soru pptp (pon) cron (debian) ile çağrıldığında başarısız olur


Burada (debian) linux sunucumdan gelen bir pptp VPN bağlantım var, uzak bir yerde bir ISA2003 sunucusuna.

(Her iki) de internet bağlantısı biraz tehlikeli, bu yüzden aramak için küçük bir senaryo yazdım. pon myvpnlink eğer bağlantı tespit ederse bağlantı azaldı.

Bu betik CLI'den çalıştırırsam iyi çalışır, ancak eğer cron ile çağrılırsa, o zaman pon çağrı başarısız olur.

Bunu hem bash hem de perlde yeniden yazdım ve her biriyle aynı problemi yaşadım. Komut yürütülür, VPN bağlantısının şu anda kapalı veya kapalı olduğunu söyleyebilir, pon Bağlanamayan pppd denen Eğer daha sonra gidersem, senaryoyu CLI'den çalıştır.

Herhangi bir düşünce çok takdir edilecektir - bu benim kutumu şimdi yapıyor.

#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

Güncelleştirme:

Şimdi iyi çalışıyor. Orijinal olarak benzeyen /etc/cron.d/vpn aracılığıyla cron girişimi çağırıyordum:

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

Şimdi değiştirildi, pptp mükemmel çalışır: -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

Justin verdiğiniz için çok teşekkür ederim :)


7
2017-12-30 17:06


Menşei




Cevaplar:


Pppd'de bir hatayı noktaya yazdığınız hata mesajı, ancak "kabuktan değil, cron'dan gelen" açıkladığınız durum genellikle yol sorunları ile ilgili.

Acılamayacağından, bunu crontab'ınızın başına eklemeyi deneyebilir misin?

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

düzenleme: kullanabileceğiniz bir geçici çözüm, her zaman kabuktan çalışıyorsa, bir başka kısa komut dosyası varsa

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

o zaman ekranda böyle bir şey ile başlayabilirsiniz

screen -S vpn -d -m thatscript

5
2018-01-02 22:25



Cevap için teşekkürler. Komut dosyası için cron girişine yol ifadeleri eklemeye ve herhangi bir değişiklik olup olmadığını görmeye çalışacağım. Döngü oluşturma fikri, iyi bir geçici çözümdür, ancak senaryolarımın çökmesi veya başka bir şey yapması ihtimalinden kaçınmaya çalıştım. Scriptimi başka bir komut dosyasından aradığınızı ve biraz esneklik eklemesini sevdim. VPN'yi izleyen kendi arka planımı (init ile çalıştırmak için) mi oluşturmam gerektiğini mi merak ediyordum yoksa bu sadece aşırı mı olacak? - BuildTheRobots
evet, yol ifadesi yardımcı olur (ve hem bash hem de perl yoluyla çağırmak, muhtemelen çok yardımcı olur) -Teşekkür ederim :-D - BuildTheRobots
Serin :-) Bir cümle, cron çalıştığı sürece muhtemelen fazladır. Ben 7 gün 24 saat çalışması gereken şeyleri veya 10 dakikalık aralıklarla çalıştırması gereken şeyleri kullanmak, ama düzenli olarak 10 dakikadan uzun sürdüm. - Justin


Teşekkürler bu benim için çalıştı! Benim yapılandırmam şimdi böyle görünüyor ...

#!/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

Ve cron'um ...

# m h  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

2
2017-07-11 06:12