1 (edytowany przez Bruno 2025-07-21 06:42:02)

Temat: CRON - skrypt do kontrolowania połączenia

Cześć szukam skryptu do CRON, aby sprawdzać pingiem np. 8.8.8.8 co 60 sek., w razie błędu dokonać ponownego restartu routera po 15 minutach. Dobrze byłoby, żeby wysłał również email do mnie, że uruchomił ponownie router w związku z zawieszką routera.

Próbowałem Watchcat, ale mam wrażenie że nie działa to jak trzeba.

Mam ponadto w CRON dodane polecenie do rebootu routera raz w tygodniu:
"00 6 * * 1 sleep 70 && touch /etc/banner && reboot"

2

Odp: CRON - skrypt do kontrolowania połączenia

https://eko.one.pl/?p=openwrt-3g#automa … rtpoczenia

Zmień sobie liczby. A do mejla - dodaj sobie na starcie routera wysyłanie: https://eko.one.pl/?p=openwrt-email

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: CRON - skrypt do kontrolowania połączenia

Hej,
Dziękuję za linki.
Czy jak dodam do CRON:

/etc/init.d/cron stop
echo "*/2 * * * * /bin/tester.sh" >> /etc/crontabs/root
/etc/init.d/cron enable
/etc/init.d/cron start

Na końcu (po cron start) powinienem dodać to, aby ssmtp wysłał mail o treści np. "Router wznowił działanie":

cat plik.txt | sendmail -t

4

Odp: CRON - skrypt do kontrolowania połączenia

Nie. Cron to nie zależy twór, jeżeli koniecznie chcesz wysłać mejla przed restartem to zrób to w skrycie tester.sh przed restartem. Zrobiłeś sobie skrypt, prawda?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5 (edytowany przez Bruno 2025-07-21 07:46:44)

Odp: CRON - skrypt do kontrolowania połączenia

Cezary napisał/a:

Nie. Cron to nie zależy twór, jeżeli koniecznie chcesz wysłać mejla przed restartem to zrób to w skrycie tester.sh przed restartem. Zrobiłeś sobie skrypt, prawda?

Tak, wrzucę go zaraz do bin i dodam komendę do wysłania maila. Muszę tylko konto gmailowe założyć, bo widzę że tutaj jest hasło przechowywane bez szyfrowania smile

6

Odp: CRON - skrypt do kontrolowania połączenia

Konto możesz sobie używać jakie masz - możesz najpierw ręcznie sprawdzić czy w ogóle wysyłanie majla działa. Zresztą tak samo jak sam skrypt tester.sh

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7 (edytowany przez smereka 2025-07-21 07:54:37)

Odp: CRON - skrypt do kontrolowania połączenia

Jeśli dobrze zrozumiałem Bruno to przeciesz skoro router utracił połączenie (nie odpowiada na na komendę ping pod 8.8.8.8) to i tak nie wyśle maila no bo siłą rzeczy nie ma czym tego wypchać wink A jak się zawiesił to najprawdopodobniej w ogóle żadnego skryptu nie wykona.

Znam ten ból bo mam pod kontrola kilkanaście routerów RUT955 z extrootami na pendriveach 64GB. I niestety od jakiegoś czasu coś zaczyna się dziać z nimi próbuje namierzyć czy to wina pena czy np małej ilości RAM.

Nie mniej w odniesieniu do tego wątku w takim stanie zawieszenia z routera nie da się połączyć ani po ssh ani po luci. Natomiast da się go pingowac. Nie wykonuje komend wysłanych po smstools3. Na chwile obecną testuję skrypt Cezarego sprawdzający poziom ramu i poniżej jakieś wartości ma zrobić restart ale czy zrobi kto to wie...

Reasumując po zawieszeniu routera ze skryptem go pilnującym różnie może być. Testy, testy i jeszcze raz testy...

8

Odp: CRON - skrypt do kontrolowania połączenia

Dlatego pisałem na początku żeby robić wysyłanie przy uruchomieniu routera. Ale...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

9

Odp: CRON - skrypt do kontrolowania połączenia

Tak, zależy mi na tym żeby cron sprawdzał czy ma połączenie. Często jest tak, że traci połączenie z wan, ale lan działa i można wbić się do routera przez Lan. Np. Zawiesił mi się wczoraj, a skrypt z crona wykonał się dziś o 6 rano i router wrócił do żywych.

10 (edytowany przez smereka 2025-07-21 08:11:07)

Odp: CRON - skrypt do kontrolowania połączenia

To oznaczy tyle, że padło Ci tylko połączenie wan. To w takim stanie wiadomo że się zrebootuje.


Bruno eksperymentuj - openwrt to taka zabawka dla dużych jak grabki i wiaderko w piaskownicy dla dzieci big_smile

11

Odp: CRON - skrypt do kontrolowania połączenia

Jak później przetestować działanie tych skryptów i komend cron? Czy poprzez odłączenie przewodu Ethernet od routera? Czy można wywołać sytuacje braku internetu? Jakie ew. komendy do sprawdzenia logów?

12

Odp: CRON - skrypt do kontrolowania połączenia

sh -x /bin/tester.sh

Widzisz co robi i jak robi. Odłącz kabel i uruchom to kilka razy, za którymś tam powinien wykonać akcję którą masz w skrypcie.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

13

Odp: CRON - skrypt do kontrolowania połączenia

Cezary napisał/a:

sh -x /bin/tester.sh

Widzisz co robi i jak robi. Odłącz kabel i uruchom to kilka razy, za którymś tam powinien wykonać akcję którą masz w skrypcie.

Ok. Ustawie na krótsze interwały, żeby nie czekać 30 min. I zobaczę czy działa jak należy. Dziękuję Cezary

14 (edytowany przez Bruno 2025-07-25 11:54:31)

Odp: CRON - skrypt do kontrolowania połączenia

Szukam tego pakietu do poczty: ssmtp, ale nie odnajduje go, czy został wycofany? mSMTP jest, ale zajmuje 36 kb

Dostępne są takie:

msmtp    1.8.26-r1    39.98 KiB    msmtp is an SMTP client. In the default mode, it transmits a mail to…   
msmtp-mta    1.8.26-r1    1.12 KiB    msmtp is an SMTP client. In the default mode, it transmits a mail to…   
msmtp-nossl    1.8.26-r1    36.16 KiB    msmtp is an SMTP client. In the default mode, it transmits a mail to…   
msmtp-queue    1.8.26-r1    9.97 KiB    msmtp is an SMTP client. In the default mode, it transmits a mail to…

15

Odp: CRON - skrypt do kontrolowania połączenia

msmtp ma taką wielkość

sstmp został wyrzucony jakiś czas temu bo nie miał kto się nim zajmować.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

16 (edytowany przez Bruno 2025-07-25 14:29:33)

Odp: CRON - skrypt do kontrolowania połączenia

Ok, więc zostanę przy msmtp, męczyłem się, aby uruchomić wysyłanie prez smtp, ale wreszcie mi się udało. Trochę zabawy, aby dodać hasło do aplikacji, ale teraz działa jak trzeba. Czy ping w skrypcie restartującym WAN to trochę nie za krótko? Skrypt w default wysyła ping i jeżeli w ciągu 10 sek. nie otrzyma odpowiedzi realizuje procedurę "ifup wan". Cron uruchamia skrypt co 2 minuty. Zastanawiam się czy podnieść interwał w CRONie na 5 - 10 minut ? Czy wykonanie co 2 minuty nie obciąża bardziej systemu? Czy ma to w ogóle znaczenie dla pracy routera?

Ja dodałem tak w skrypcie tester.sh:

   #!/bin/sh
    if ! ping -q -c 1 -W 10 google.com > /dev/null; then
        (ifup wan) & cat mail.txt | msmtp -t
   fi

Po procedurze ifup wan wysyła maila. Czy da się to jakoś opóźnić, żeby np. podniesieniu interfejsu WAN wysyłał maila, ale np. po 15 sekundach, tyle mniej więcej zajmuje podniesienie WAN. Podczas testów wykonuje ifup wan i od razu wysyła maila, ale wiadomo nie ma netu, więc wyskakuje błąd.

root@Router:~# sh -x /bin/tester.sh
+ ping -q -c 1 -W 10 google.com
ping: sendto: Network unreachable
+ ifup wan
+ cat mail.txt
+ msmtp -t
msmtp: cannot locate host smtp.gmail.com: Try again
msmtp: could not send mail (account default from /etc/msmtprc)

17

Odp: CRON - skrypt do kontrolowania połączenia

ifup wan
sleep 15
cat mail.txt | msmtp -t

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

18 (edytowany przez Bruno 2025-07-25 14:39:28)

Odp: CRON - skrypt do kontrolowania połączenia

czyli skrypt będzie wyglądał tak ?:

#!/bin/sh

if ! ping -q -c 1 -W 10 google.com > /dev/null; then
    (
        ifup wan
        sleep 15
        cat mail.txt | msmtp -t
    ) &
fi

19

Odp: CRON - skrypt do kontrolowania połączenia

Nawet bez nawiasów.

#!/bin/sh
if ! ping -q -c 1 -W 10 google.com > /dev/null; then
        ifup wan
        sleep 15
        cat mail.txt | msmtp -t
fi 
Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

20

Odp: CRON - skrypt do kontrolowania połączenia

ok, dałem nawiasy, żeby całość uruchomiła się w tle "&". Ale nie wiem czy to potrzebne smile

21

Odp: CRON - skrypt do kontrolowania połączenia

Jeśli chciałbyś mieć natychmiastowe powiadomienia o tym że utraciłeś łączność to poniżej moje rozwiązanie:
- VMka z postawionym Zabbixem w lokalizacji innej niż sam router
- tunel Zerotier łączący router z OpenWRT z tą VMką 
- Zabbix odpala co 60sek ping i sprawdza czy host (router) jest dostępny. Jeśli nie, to wysyła info na maila i Slacka

W planach integracja tego z Mini-SNMP


Oczywiście ma to sens jeśli do monitoringu masz więcej urządzeń i ta VMka będzie miała jakiś ekonomiczny sens lub gdy możesz ją postawić gdzieś za free. Zamiast Zabbixa można też napisać swoje skrypty bo to jednak większe narzędzie. Chodzi głównie o to aby monitorować to z zewnątrz - wtedy info masz szybciej a nie dopiero jak urządzenie się zrestartuje

22

Odp: CRON - skrypt do kontrolowania połączenia

Bruno napisał/a:

ok, dałem nawiasy, żeby całość uruchomiła się w tle "&". Ale nie wiem czy to potrzebne smile

Jak wolisz. Wysyłanie i tak ideologicznie powinno być na hotplugu przy podniesieniu interfejsu wan.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

23 (edytowany przez Bruno 2025-07-25 14:56:33)

Odp: CRON - skrypt do kontrolowania połączenia

dav4dav4 napisał/a:

Jeśli chciałbyś mieć natychmiastowe powiadomienia o tym że utraciłeś łączność to poniżej moje rozwiązanie:
- VMka z postawionym Zabbixem w lokalizacji innej niż sam router
- tunel Zerotier łączący router z OpenWRT z tą VMką 
- Zabbix odpala co 60sek ping i sprawdza czy host (router) jest dostępny. Jeśli nie, to wysyła info na maila i Slacka

W planach integracja tego z Mini-SNMP


Oczywiście ma to sens jeśli do monitoringu masz więcej urządzeń i ta VMka będzie miała jakiś ekonomiczny sens lub gdy możesz ją postawić gdzieś za free. Zamiast Zabbixa można też napisać swoje skrypty bo to jednak większe narzędzie. Chodzi głównie o to aby monitorować to z zewnątrz - wtedy info masz szybciej a nie dopiero jak urządzenie się zrestartuje

Wygląda super, ale u mnie to raczej 1 urządzenie, do zastosowań domowych. Bardziej zabawa, żeby wiedział bez sprawdzania logów że skrypt zadziałał i podniósł WAN po jakimś incydencie smile

Na razie coś nie chce do końca działać, jak wywołuje skrypt to nie restartuje WAN, ale z CRON chyba działa, obniżłem częstotliwość wykonania skryptu do 1 minuty tak łatwiej testować.

Cezary napisał/a:
Bruno napisał/a:

ok, dałem nawiasy, żeby całość uruchomiła się w tle "&". Ale nie wiem czy to potrzebne smile

Jak wolisz. Wysyłanie i tak ideologicznie powinno być na hotplugu przy podniesieniu interfejsu wan.

Ok, to wyrzucę "&", dziękuję.

24 (edytowany przez Bruno 2025-07-25 16:44:36)

Odp: CRON - skrypt do kontrolowania połączenia

Walczę dalej i mam pytanie. do tej pory w Cronie miałem ustawione to:

 
00 6 * * 1 sleep 70 && touch /etc/banner && reboot
00 7 * * * sync && echo 3 > /proc/sys/vm/drop_caches
00 19 * * * sync && echo 3 > /proc/sys/vm/drop_caches
00 22 * * * sync && echo 3 > /proc/sys/vm/drop_caches

Czy po dodaniu poleceń w wątku dot. przywracania połączenia tj.

 
/etc/init.d/cron stop
echo "*/1 * * * * /bin/tester.sh" >> /etc/crontabs/root
/etc/init.d/cron enable
/etc/init.d/cron start 

Będzie działać również raz w tygodniu reboot routera i kasowanie cache'u ?

Czy nie wystarczy jedynie dodać tego:

echo "*/1 * * * * /bin/tester.sh" >> /etc/crontabs/root

Niestety skrypt z dodanym powiadomieniem nie chce się uruchamiać w zakresie wysłania mailu. Trochę go zmodyfikowałem tj.

echo  "$(date) cron dziala" >> /tmp/tester.log

if ! ping -q -c 1 -W 5 google.com > /dev/null; then
    echo "Brak internetu, probuje wznowic" >> /tmp/tester.log
    ifup wan
    for i in $(seq 1 20); do
        sleep 3
        if ping -q -c 1 -W 5 google.com > /dev/null; then
            echo "Polaczenie przywrocone, wysylam maila" >> /tmp/tester.log
            cat /bin/mail.txt | /usr/bin/msmtp -t >> /tmp/msmtp.log 2>&1
            break
        fi
    done
else
    echo "Internet jest OK" >> /tmp/tester.log
fi

25

Odp: CRON - skrypt do kontrolowania połączenia

>> dodaje do pliku. Wszystko inne to tylko łącznie przeładowanie crona (co i tak musisz zrobić w taki czy inny sposób).

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.