Sida 1 av 1

"ALARM" - Vid conection drop

Postat: 12 jan 2009, 22:45
av Emil.s
Har problem med att min lina dör lite då och då... Ibland längre fel, ibland kortare... Tror jag. Skulle iallafall vilja få mer exakta tidpunkter på när problemen egentligen inträffar.
Skulle behöva något som kollade uppkopplingen varje sekund, och när uppkopplingen bryts så skrivs det ut med wall eller något...

Kod: Markera allt

#!/bin/bash

while [ ping eller vad!? ==  funkar ]
sleep 1
else
echo fel | wall 
Typ.. Men hur ska man bära sig åt för att kolla om uppkopplingen funkar?

Re: "ALARM" - Vid conection drop

Postat: 12 jan 2009, 23:52
av Lars
Ping är väl ett bra sätt att kolla med. Mitt förslag:

Kod: Markera allt

#!/bin/sh

while true; do
  if ! ping -c1 tillförlitligsever.se > /dev/null; then
      echo $(date): Fel | tee log.txt | wall
  fi
  sleep 1
done

Re: "ALARM" - Vid conection drop

Postat: 13 jan 2009, 00:50
av farmfield
Varje sekund känns dock som brutalt overkill, eller? Var 10e? 30e? Beror ju på hur ofta du tappar linan...

Re: "ALARM" - Vid conection drop

Postat: 13 jan 2009, 01:02
av Emil.s
farmfield skrev:Varje sekund känns dock som brutalt overkill, eller? Var 10e? 30e? Beror ju på hur ofta du tappar linan...
Nej, det ger nog en rätt bra koll. var 5e funkar ju iof. Kan vara helt dött i 10-20 sec, så har man längre så är risken stor att man missar.

Ska testa Lars script.

Om jag förstår det rätt så retuneras 0/false om det blir någon som hellst output i en "if" sats?
Och då fel printas på "level2" eller hur det nu funkar så bryts det alltså då?

Dock så var jag tvungen att lägga till "-t X" för att ping inte ska ta så lång tid på sig...

Re: "ALARM" - Vid conection drop

Postat: 13 jan 2009, 01:27
av Lars
Emil.s skrev:Om jag förstår det rätt så retuneras 0/false om det blir någon som hellst output i en "if" sats?
Och då fel printas på "level2" eller hur det nu funkar så bryts det alltså då?
If-satsen kollar returvärdet på ping-anropet, lite enkelt förklarat returnerar det true eller false beroende på om kommandot lyckas eller ej (egentligen ett värde > 0 vid fel). Utskriften från ping skickas till /dev/null och ignoreras.

Min variant fortsätter i oändlighet (while true) så att du ser hur lång tid det tar för nätet att komma tillbaka.

Re: "ALARM" - Vid conection drop

Postat: 13 jan 2009, 02:31
av farmfield
Emil.s skrev:
farmfield skrev:Varje sekund känns dock som brutalt overkill, eller? Var 10e? 30e? Beror ju på hur ofta du tappar linan...
Nej, det ger nog en rätt bra koll. var 5e funkar ju iof. Kan vara helt dött i 10-20 sec, så har man längre så är risken stor att man missar.
Fast tar det verkligen ingen prestanda (maskin/ram/io/nic?) att loopa en sånt script varje sekund..? Jo, jag ser hur enkelt det är, men ändå..?

Men det beror ju på vilken typ av nätförlust du har och om du bara vill kolla ibland snarare än att köra det 24/7...

Re: "ALARM" - Vid conection drop

Postat: 13 jan 2009, 17:21
av Emil.s
farmfield skrev:
Emil.s skrev:
farmfield skrev:Varje sekund känns dock som brutalt overkill, eller? Var 10e? 30e? Beror ju på hur ofta du tappar linan...
Nej, det ger nog en rätt bra koll. var 5e funkar ju iof. Kan vara helt dött i 10-20 sec, så har man längre så är risken stor att man missar.
Fast tar det verkligen ingen prestanda (maskin/ram/io/nic?) att loopa en sånt script varje sekund..? Jo, jag ser hur enkelt det är, men ändå..?

Men det beror ju på vilken typ av nätförlust du har och om du bara vill kolla ibland snarare än att köra det 24/7...
Mja, har man 14k-modem så kanske man kan börja bry sig. Men 1 ping paket i sekunden på 64 bytes, dvs utan kilo före är inte allt för mycket. Faktiskt inte mer än ca 0.000014% av min totala bandbredd. ;)

EDIT:
NEJ NEJ, EMIL. Gör om gör rätt!
0.00011% Ska det givetvis vara. :)

Re: "ALARM" - Vid conection drop

Postat: 20 jan 2009, 21:20
av Emil.s
Sådär, har provat, och ändrat, och nu ser sciptet ut så här:

Kod: Markera allt

#!/bin/bash

while true; do
  if ! ping -c 1 -W 1 91.95.224.1 > /dev/null; then
      echo $(date): Fel | tee -a connection_drop.log
  else
  sleep 1
  fi
done
Problemet är dock lite enskillda paket som försvinner lite då och då pga olika anledningar. Skulle villja att 2 paket skickades (-c2), men det ska bara skrivas ut "Fel" om båda paketen försvunnit. Funderar på om det skulle funka om man ersatte "> /dev/null" med "| grep 100% packet loss" eller liknande?
Eller finns det något finare sätt? :)

Re: "ALARM" - Vid conection drop

Postat: 20 jan 2009, 21:42
av Konservburk
ping returnerar väl sant bara något paket kommer fram? Så du borde inte behöva använda grep alls.