Watchdog na routovaci tabulku: Porovnání verzí
m (Editace uživatele „68.185.182.180“ vrácena do předchozího stavu, jehož autorem je „Pavkriz“.) |
|||
(Není zobrazeno 12 mezilehlých verzí od 6 dalších uživatelů.) | |||
Řádek 22: | Řádek 22: | ||
# | # | ||
− | POLOZEK="` | + | POLOZEK="`route -n | grep ^[0-9] | wc -l | sed s/[^0-9]//`" |
LIMIT=50 | LIMIT=50 | ||
if [ $POLOZEK -lt $LIMIT ] | if [ $POLOZEK -lt $LIMIT ] | ||
then | then | ||
− | + | MESSAGE="$0: Routovaci tabulka ma jen $POLOZEK radku, to je mene nez $LIMIT, restartuji procesy: zebra, ospfd." | |
− | sleep | + | logger "$MESSAGE" |
+ | sleep 2 | ||
killall ospfd | killall ospfd | ||
killall zebra | killall zebra | ||
sleep 1 | sleep 1 | ||
− | zebra -d | + | zebra -d &>/dev/null |
− | ospfd -d | + | ospfd -d &>/dev/null |
fi | fi | ||
zveřejnil: VojtaLhota, 19.8.2005 | zveřejnil: VojtaLhota, 19.8.2005 | ||
+ | |||
+ | Rozšířená verze která táž kontroluje, zda procesy vůbec běží (na routeru Hrádek se občas stávalo, že proces odpfd skončil (nebyl v ps) ale přesto zůstala routovací tabulka plná) | ||
+ | |||
+ | #!/bin/sh | ||
+ | # Skript na hlidani zebry+ospfd | ||
+ | # VojtaLhota pro HKfree.org, 8/2005 | ||
+ | # | ||
+ | # Spoustet z /etc/crontab kazdych 5 minut takto: | ||
+ | # "*/3 * * * * root /usr/local/bin/routedog.sh" | ||
+ | # | ||
+ | # Pokud routovaci tabulka obsahuje prilis malo zaznamu, | ||
+ | # svedci to o tom, ze se vnitrne zaseklo ospfd, nebo nebezi vubec. | ||
+ | # | ||
+ | # srpen 2005 - v routovacich tabulkach HKfree je cca 380 radku. | ||
+ | # Jako limit volim pouze 50, abych zbytecne nerestartoval kdyz se opravdu | ||
+ | # rozpadne sit. | ||
+ | # | ||
+ | |||
+ | POLOZEK="`route -n | grep ^[0-9] | wc -l | sed s/[^0-9]//`" | ||
+ | LIMIT=50 | ||
+ | |||
+ | if [ $POLOZEK -lt $LIMIT ] | ||
+ | then | ||
+ | MESSAGE="$0: Routovaci tabulka ma jen $POLOZEK radku, to je mene nez $LIMIT, restartuji procesy: zebra, ospfd." | ||
+ | logger "$MESSAGE" | ||
+ | sleep 2 | ||
+ | killall ospfd | ||
+ | killall zebra | ||
+ | sleep 1 | ||
+ | zebra -d &>/dev/null | ||
+ | ospfd -d &>/dev/null | ||
+ | fi | ||
+ | |||
+ | # | ||
+ | # Dale kontrolujeme prosty beh tech procesu. | ||
+ | # | ||
+ | if ! ps ax | grep ospfd | grep -v grep &>/dev/null | ||
+ | then | ||
+ | MESSAGE="$0: nebezi ospfd, restartuji procesy: zebra, ospfd." | ||
+ | logger "$MESSAGE" | ||
+ | killall ospfd | ||
+ | killall zebra | ||
+ | sleep 1 | ||
+ | zebra -d &>/dev/null | ||
+ | ospfd -d &>/dev/null | ||
+ | fi | ||
+ | |||
+ | if ! ps ax | grep zebra | grep -v grep &>/dev/null | ||
+ | then | ||
+ | MESSAGE="$0: nebezi zebra, restartuji procesy: zebra, ospfd." | ||
+ | logger "$MESSAGE" | ||
+ | killall ospfd | ||
+ | killall zebra | ||
+ | sleep 1 | ||
+ | zebra -d &>/dev/null | ||
+ | ospfd -d &>/dev/null | ||
+ | fi | ||
+ | |||
+ | |||
+ | zveřejnil: VojtaLhota, 7.9.2005 |
Aktuální verze z 25. 3. 2006, 18:05
Občas se na routerech stává, se zasekne proces zebra a/nebo ospfd. Normální routovací tabulka v hkfree mívá okolo 380 položek (srpen 2005). Zaseknutí zebry se projeví (kromě nefunkčnosti sítě/internetu okolo vašeho routeru) tak, že má najednou routovací tabulka pouze několik málo řádků (5-20 dle konfigurace) i přesto, že procesy běží (jsou vidět v ps) a na portech 2601 resp 2604 komunikují. Právě tohoto jevu využívá můj skript, který oba procesy zrestartuje. Je třeba ho spouštět 1x za několik minut (navrhuji 3 minuty) pomocí cronu.
Do /etc/crontab vložíme řádek:
*/3 * * * * root /usr/local/bin/routedog.sh
Vlastní skript (/usr/local/bin/routedog.sh)
#!/bin/sh # Skript na hlidani zebry+ospfd # VojtaLhota pro HKfree.org, 8/2005 # # Spoustet z /etc/crontab kazdych 5 minut takto: # "*/3 * * * * root /usr/local/bin/routedog.sh" # # Pokud routovaci tabulka obsahuje prilis malo zaznamu, # svedci to o tom, ze se vnitrne zaseklo ospfd, nebo nebezi vubec. # # srpen 2005 - v routovacich tabulkach HKfree je cca 380 radku. # Jako limit volim pouze 50, abych zbytecne nerestartoval kdyz se opravdu # rozpadne sit. # POLOZEK="`route -n | grep ^[0-9] | wc -l | sed s/[^0-9]//`" LIMIT=50 if [ $POLOZEK -lt $LIMIT ] then MESSAGE="$0: Routovaci tabulka ma jen $POLOZEK radku, to je mene nez $LIMIT, restartuji procesy: zebra, ospfd." logger "$MESSAGE" sleep 2 killall ospfd killall zebra sleep 1 zebra -d &>/dev/null ospfd -d &>/dev/null fi
zveřejnil: VojtaLhota, 19.8.2005
Rozšířená verze která táž kontroluje, zda procesy vůbec běží (na routeru Hrádek se občas stávalo, že proces odpfd skončil (nebyl v ps) ale přesto zůstala routovací tabulka plná)
#!/bin/sh # Skript na hlidani zebry+ospfd # VojtaLhota pro HKfree.org, 8/2005 # # Spoustet z /etc/crontab kazdych 5 minut takto: # "*/3 * * * * root /usr/local/bin/routedog.sh" # # Pokud routovaci tabulka obsahuje prilis malo zaznamu, # svedci to o tom, ze se vnitrne zaseklo ospfd, nebo nebezi vubec. # # srpen 2005 - v routovacich tabulkach HKfree je cca 380 radku. # Jako limit volim pouze 50, abych zbytecne nerestartoval kdyz se opravdu # rozpadne sit. # POLOZEK="`route -n | grep ^[0-9] | wc -l | sed s/[^0-9]//`" LIMIT=50 if [ $POLOZEK -lt $LIMIT ] then MESSAGE="$0: Routovaci tabulka ma jen $POLOZEK radku, to je mene nez $LIMIT, restartuji procesy: zebra, ospfd." logger "$MESSAGE" sleep 2 killall ospfd killall zebra sleep 1 zebra -d &>/dev/null ospfd -d &>/dev/null fi # # Dale kontrolujeme prosty beh tech procesu. # if ! ps ax | grep ospfd | grep -v grep &>/dev/null then MESSAGE="$0: nebezi ospfd, restartuji procesy: zebra, ospfd." logger "$MESSAGE" killall ospfd killall zebra sleep 1 zebra -d &>/dev/null ospfd -d &>/dev/null fi if ! ps ax | grep zebra | grep -v grep &>/dev/null then MESSAGE="$0: nebezi zebra, restartuji procesy: zebra, ospfd." logger "$MESSAGE" killall ospfd killall zebra sleep 1 zebra -d &>/dev/null ospfd -d &>/dev/null fi
zveřejnil: VojtaLhota, 7.9.2005