2011-01-17, 09:47
  #1
Medlem
massamulls avatar
Hej,
Jag skulle behöva hjälp med att fixa ett failover script till min DD-wrt routrer och en AP av samma sort.
alltså båda är baserade på DD-wrt konf

Som det ser ut idag så har jag kopplat samman min router med accespunkten via WDS för trådlös kommunikation. Detta funkar oftast bra.
Dock så kan de ibland komma "ur sync" och inte hitta varandra. Detta kan bero på dålig signal när det snöar/regnar eller blåser mycket. Samt ibland vid omstart av någon av dem. Detta hjälper ofta om man startar om en gång till.
Det finns INGEN möjlighet att koppla min AP via kabel.

Det ja skulle vilja är följande(Om ingen har ett bättre förslag)
Att min AP skickar 3 ping till min router, får den inget svar så sleepar den i tex 20sek
detta upprepas totalt 3 gånger alltså 3 ping x 3 tillfällen med 20sek mellan dessa om inget svar på något av pingen görs den tredje gången så ska den bara köra
Kod:
reboot
och så är nog allt frid och fröjd?

Något förslag på ett bashscript eller likande? Jag vill gärna att detta ska fungera och även lära mig


Tacksam för svar
Citera
2011-01-17, 15:05
  #2
Medlem
xcb567s avatar
Eviga loopar är inget vackert... Lägg tex ett cron-job varje minut
Kod:
ping -q -c 3 -w 4 A.B.C.D 2>&1 > /dev/null || reboot
3 ping, 4 sekunder total timeout. En eller flera timeout/errors orsakar omstart
A.B.C.D är självklart IPn du vill pinga
Citera
2011-01-17, 15:09
  #3
Medlem
massamulls avatar
Citat:
Ursprungligen postat av xcb567
Eviga loopar är inget vackert... Lägg tex ett cron-job varje minut
Kod:
ping -q -c 3 -w 4 A.B.C.D 2>&1 > /dev/null || reboot
3 ping, 4 sekunder total timeout. En eller flera timeout/errors orsakar omstart
A.B.C.D är självklart IPn du vill pinga



Jo jag hade tänkt att köra ett cronjob eller likande.
jag ska läsa på lite så ja exakt förstår vad den gör, även om jag redan vet de "typ".

Tack för hjälpen ska kolla vidare på den senare när jag har tid!
Citera
2011-01-17, 16:10
  #4
Medlem
massamulls avatar
Citat:
Ursprungligen postat av xcb567
Eviga loopar är inget vackert... Lägg tex ett cron-job varje minut
Kod:
ping -q -c 3 -w 4 A.B.C.D 2>&1 > /dev/null || reboot
3 ping, 4 sekunder total timeout. En eller flera timeout/errors orsakar omstart
A.B.C.D är självklart IPn du vill pinga


Hejsan jag har nu testat ditt lilla kommando men det jag upptäckte var att den bara pingar bara 3 gånger och inte 3x3 gånger. Hänger du med?

ping "nej" - ping "nej" - ping "nej" slepp 20 sekunder ping "nej" - ping "nej" - ping "nej" sleep 20 sekunder ping "nej" - ping "nej" - ping "nej" reboot
Citera
2011-01-17, 17:16
  #5
Medlem
massamulls avatar
Just nu ser det ut såhär

jag ska dock testa och se om den reagerar konstigt på om den missar någon enstaka ping. Vilket kan hända med trådlöst ibland

Återkommer

Kod:
ping -c 10 -W 20 A.B.C.D || ping -c 10 -W 20 A.B.C.D || ping -c 10 A.B.C.D || reboot
Citera
2011-01-17, 17:52
  #6
Medlem
hashs avatar
Inget vackert script, men den gör jobbet iaf.

Kod:
!/bin/sh
#
host="192.168.1.1"
n=1
i
=0

while [ $n -le 3 ]; do

   
ping -c3 $host 1>/dev/null
   
if [ "$?" "1" ] ; then
      let i
++
   
fi
   let n
++
   
sleep 20
   
if [ "$i"3" ] ; then
      reboot
   fi

done 
__________________
Senast redigerad av hash 2011-01-17 kl. 18:02.
Citera
2011-01-17, 19:04
  #7
Medlem
xcb567s avatar
Citat:
Ursprungligen postat av massamull
Hejsan jag har nu testat ditt lilla kommando men det jag upptäckte var att den bara pingar bara 3 gånger och inte 3x3 gånger. Hänger du med?
imho, 3x3 = 9
ändra -c 3 till -c 9 för 9 ping, eller nån speciell kinky anledning till 3x3 ?
som jag skrev innan så blir det reboot om en ping får timeout

Kan tillägga att min version av ping här inte ger exit-status !=0 utan deadline (-w)
Citera
2011-01-18, 09:03
  #8
Medlem
massamulls avatar
Citat:
Ursprungligen postat av xcb567
imho, 3x3 = 9
ändra -c 3 till -c 9 för 9 ping, eller nån speciell kinky anledning till 3x3 ?
som jag skrev innan så blir det reboot om en ping får timeout

Kan tillägga att min version av ping här inte ger exit-status !=0 utan deadline (-w)



Jo som jag skrev innan så vill jag att den ska vänta med att kolla efter 3 nya pingsvar i 20 sek om den inte får svar. Som jag förstått de så pingar den bara 9 gånger i rad och inte som jag vill pingar 3 gånger (om inget svar) vänta 20 sek ping 3 gånger (om inget svar) ping 3 gånger omedelbar reboot.


annars kan det bli en obehaglig reboot-loop samt att det ibland kan hända att den missar någon enstaka ping och då inte behöver starta om. Vilket med 3x3 ping kommer att minska

Hänger du med?
__________________
Senast redigerad av massamull 2011-01-18 kl. 09:09.
Citera
2011-01-21, 23:12
  #9
Medlem
massamulls avatar
Det slutade med att jag skapade ett cronjob eftersom det var enklast så. Jag gjorde inget script utan det blev mera som ett omständigt kommando. Men det funkar hur bra som helst.

Eftersom DD wrt är så pass bantad så var det endast krångel med att lägga in det som skript eftersom flashminnet töms vid omstart och scriptet försvinner (Ja man kan lägga scriptfilen i vissa mappar så att det inte försvinner efter omstart)

Såhär ser det ut, alltså ett vanligt cronjob som pingar 4 gånger var 5:de minut. enkelt och bra OM inget problem uppstår.
Man slipper problem med onödiga omstarter pga att man tappar något enstaka packet.
Och funkar de som de ska så tar det nästan ingen prestanda, det är trots allt bara ping.

Kod:
 */5 * * * * root ping -c 4 -W 20 10.0.0.1 2>&1 > /dev/null || ping -c 10 -W 20 10.0.0.1 2>&1 > /dev/null || ping -c 10 -W 20 10.0.0.1 2>&1 > /dev/null || reboot
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in