Wiem, to jest świetne smile Dzięki!

Super, dziękuję.

Jeszcze jedna rzecz. Podczas logowania się przez sh, wyświetla się taki fajny monit o parametrach routera, obciążeniu routera. Czy da się go wywołać na żądanie? Czy jedynie podczas pierwszego logowania się do routera?

Ok, bo wyżej wspomniałeś, że tmp mam zawolony, więc co mogę usunąć, żeby poprawić działanie sysupgrade ?

Cezary napisał/a:

Ideologicznie /bin nie jest odpowiednim miejscem do przechowywania takich rzeczy, tam powinny być tylko binarki. Ideologicznie, bo to linux i możesz sobie  to umieścić prawie wszędzie gdzie chcesz, system nie dba o to. Ale ideologicznie powinieneś to zrobić np. w /etc.

Wobec tego będę pamiętać, żeby wrzucić do /etc. czy podczas sysupgrade również muszę wrzucić do wykluczeń plik mail.txt z folderu etc? Rozumiem, że skrypt tester.sh mogę zostawić w bin, czy również powinienem wrzucić do /etc.

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

2. Przy Owut check bardzo często router się restartuje, czy to wynika z przepełnienia pamięci urządzenia ?

Owut ściąga pliki i gotowe obrazy do /tmp. Jeżeli masz /tmp zawalony to tak, może się system przekręcać z powodu braku pamięci.

Czy mogę śmiało usunąć cały folder /tmp ?


0.db                           opkg-lists
TZ                             overlay
adblock-backup                 owut-failures-feeds.html
adblock-report                 resolv.conf
board.json                     resolv.conf.d
collectd.conf                  rrd
dhcp.leases                    run
dnsmasq.d                      shm
etc                            spool
hosts                          state
lib                            sysinfo
lock                           tmp
log                            usr
luci-indexcache.21dd52e2.json

Gdzie są ustawienia systemowe, że np. cat /bin/mail.txt | msmtp - t

msmtp działa bez ścieżki dostępu, a do pliku mai.txt musiałem dodać ścieżkę.

2. Przy Owut check bardzo często router się restartuje, czy to wynika z przepełnienia pamięci urządzenia ?

zrobiłem z komendą --force, bo nie było co aktualizować i jest ok smile

Plik mail.txt przeniosłem do /bin w to samo miejsce co tester.sh

Wygląda, że teraz sysupgrade nie kasuje tych moich skryptów. Zobaczę jeszcze przy kolejnym owut upgrade jak się pojawią nowe aktualizacje.

Dodałem dwa pliki: mail.txt i /bin/tester.sh do /etc/sysupgrade.conf
Czy to wystarczy, aby sysupgrade nie skasowało tego skryptu i pliku txt ?

Cezary, przepraszam że zawracam głowę smile Ale jesteś dla mnie kompendium wiedzy, wolę się dopytać niż uczyć na błędach. Bardzo dziękuję za każdą Twoją odpowiedź i błyskawiczne wsparcie smile

Przy okazji, czy owut upgrade skasuje skrypt z BIN tester.sh ? Mam wrażenie, że tak się teraz stało po aktualizacji owut upgrade.

zastanawiam się czy nie lepiej byłoby zamiast restartu WAN robić restart całego routera? Czy komenda reboot nie byłaby pewniejsza?

Czy tak będzie ok?

 
#!/bin/sh

logger "[$(date)] CRON: Skrypt dziala"

if ! ping -q -c 1 -W 5 google.com > /dev/null; then
    logger "Brak internetu, probuje wznowic"
    ifup wan
    for i in $(seq 1 20); do
        sleep 3
        if ping -q -c 1 -W 5 google.com > /dev/null; then
            logger "Polaczenie przywrocone, wysylam maila"
            cat mail.txt | msmtp - t
            break
        fi
    done
fi

Dziękuję za wyjaśnienie. Wszystko powinno działać. Czy ten skrypt niżej można rozbudować, żeby w logread był widoczny proces testowania połączenia itp?

Czy da się dodać polskie znaki? W Vi zastępuje mi polskie znaki...

 #!/bin/sh
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 mail.txt | msmtp -t >> /tmp/msmtp.log 2>&1
            break
        fi
    done
else
    echo "Internet jest OK" >> /tmp/tester.log
fi

Sugerowałem się Twoim poradnikiem Automatyczny restart połączenia https://eko.one.pl/?p=openwrt-3g#automa … rtpoczenia

Następnie można dodać wywołanie tego skryptu do crona i uruchamiamy go:

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

Ostatecznie crontab wygląda tak:

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

*/1 * * * * /bin/tester.sh

Oprócz moich wcześniejszych ustawień do konserwacji routera dodałem jedynie ostatni zapis.
Teraz widzę w logach, że cron co minutę uruchamia skrypt tester.sh i wszystko działa.

Czy mogę pominąć te opcje jego wyłączania/włączania czyli:

/etc/init.d/cron stop

/etc/init.d/cron enable
/etc/init.d/cron start

Gdy skrypt uruchomię ręcznie wszystko działa. Po przywróceniu połączenia i po ponownym uruchomieniu WAN , połączenia się wznawia, a mail wysyła. problem był w ścieżce do treści mail.txt. Usunąłem ścieżkę i zostawiłem sam mail.txt i msmtp -t czyli

cat mail.txt | msmtp -t >> /tmp/msmtp.log 2>&1

Niestety przez CRON'a nie chce się uruchomić lub uruchamia się jedynie w zakresie: ifup wan.

Można zweryfikować jakie czynności wykonuje CRON, bo w logoach widzę jedynie jak wystąpi jakiś błąd, ale to widziałem podczas konfiguracji crontab, ale po naprawie błedu, nie widzę czy CRON się wykonuje i co dokładnie robi.

Te komedy muszą być?


/etc/init.d/cron stop

/etc/init.d/cron enable
/etc/init.d/cron start

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
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ę.

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

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

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)

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…

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

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?

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.

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