Nowe posty

Autor Wątek: skrypt do pingowania komputerów w sieci  (Przeczytany 6694 razy)

styko

  • Gość
skrypt do pingowania komputerów w sieci
« dnia: 2010-12-17, 11:25:20 »
Witam. Potrzebuję skryptu, który odpalony na jednym komputerze, będzie pingował co pare minut dwa pozostałe w sieci lokalnej. Jeżeli ping się nie powiedzie do żadnego, komputer powinien się wyłączyć.

Chodzi generalnie o to, że jeżeli 2 pozostałe komputery zdalnie się wyłączą bo padnie zasilanie i jada na UPSie, to za pomocą pinga sprawdzam z pierwszego czy są wyłączone, jeżeli tak...także się wyłącza.

Znalazłem na jednym forum 2 skrypty jednakże mam problem z ich odpaleniem.

#!/bin/bash
FOO=0
until [ $FOO -eq 4 ]; do
    if [ `ping -c 1 192.168.0.1 | grep from | wc -l` -eq 0 ]; then
        FOO=$[FOO + 1]
    else
        FOO=0
    fi
    sleep 15m
done
shutdown -h now
#!/bin/bash
BAR=0
until [ $BAR -eq 4 ]; do
    sleep 15m
    FOO1=`ping -c 1 IP1 | grep from | wc -l`
    FOO2=`ping -c 1 IP2 | grep from | wc -l`
    FOO3=`ping -c 1 IP3 | grep from | wc -l`
    FOO=$[FOO1 + FOO2 + FOO3]
    if [ $FOO -eq 0 ]; then
        BAR=$[BAR + 1]
    else
        BAR=0
    fi
done
shutdown -h now
przerobiłem je na moje potrzeby odpalając na kompie coś takiego (Próbowałem na obydwu)

#!/bin/bash
FOO=0
until [ $FOO -eq 4 ]; do
    if [ `ping -c 1 192.168.100.8 | grep from | wc -l` -eq 0 ]; then
        FOO=$[FOO + 1]
    else
        FOO=0
    fi
    sleep 3m
done
shutdown -h now
oraz
#!/bin/bash
BAR=0
until [ $BAR -eq 4 ]; do
    sleep 3m
    FOO1=`ping -c 1 192.168.100.8 | grep from | wc -l`
    FOO2=`ping -c 1 192.168.100.9 | grep from | wc -l`
    FOO=$[FOO1 + FOO2]
    if [ $FOO -eq 0 ]; then
        BAR=$[BAR + 1]
    else
        BAR=0
    fi
done
shutdown -h now
w obydwu przypadkach otrzymuje błedy

w 1 skrypcie

Line 4: [:Brakuje `]'

natomiast w drugim skrypcie mam

Line 3: [:Brakuje `]'

Próbowałem wszelkich kombinacji umiejscowienia -->` w kodzie ale nic nie idzie.

Czy ktoś ma pomysł co tu jest źle?? :/
Pozdrawiam i dzieki za odpowiedź

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
skrypt do pingowania komputerów w sieci
« Odpowiedź #1 dnia: 2010-12-17, 18:27:15 »
#!/bin/sh

PC1="192.168.1.10"
PC2="192.168.1.11"

while true; do
  ! ping -n -q -c 1 $PC1 && \\
  ! ping -n -q -c 1 $PC2 && \\
  shutdown -h now
  sleep 30
done

ra-v

  • Gość
skrypt do pingowania komputerów w sieci
« Odpowiedź #2 dnia: 2010-12-17, 18:29:33 »
W 1. kodzie spróbować poprawić na
if [ `ping -c 1 192.168.100.8 | grep from | wc -l` -ne 1 ]; then
lub
if [ "`ping -c 1 192.168.100.8 | grep from | wc -l`" != "1" ]; then
W drugim kodzie
until [ "$BAR" = "4" ]; do
Dla mnie to bez sensu, bo jakby -eq nie działało.

Poczytaj
man test
może masz jakąś wyjątkową dystrybucję.

Offline roobal

  • Users
  • Guru
  • *****
  • Wiadomości: 2056
    • Zobacz profil
skrypt do pingowania komputerów w sieci
« Odpowiedź #3 dnia: 2010-12-19, 01:27:19 »
Spróbuj zacząć od tego

#!/bin/bash

a=1
while [ $a -lt "255" ]; do
    ping -i 0.2 -W 1 -c 2 192.168.0.$a | grep "bytes from" | awk '{print $4 " up"}' | sort | uniq;
    let x++;
done
Pozdrawiam!

styko

  • Gość
skrypt do pingowania komputerów w sieci
« Odpowiedź #4 dnia: 2010-12-21, 09:29:38 »
Witam. Dziękuję za wszelkie podpowiedzi, zdecydowałem się wykorzystać ten skrypcik gdyż działa elegancko.

Cytat: ultr
#!/bin/sh

PC1="192.168.1.10"
PC2="192.168.1.11"

while true; do
  ! ping -n -q -c 1 $PC1 && \\
  ! ping -n -q -c 1 $PC2 && \\
  shutdown -h now
  sleep 30
done
Z tym że, prosiłbym o kolejną podpowiedź dotyczącą modyfikacji. Chodzi mi o to, żeby ten skrypt nie wyłączał kompa od razu po tym jak nie wykryje wracające pinga, tylko sprawdził jeszcze powiedzmy 2 razy w odstępach 5 minutowych, zanim zrobi shutdown. Na wypadek jakby ktoś switcha restartował...nie wyłączy mi wtedy kompa tylko sprawdzi jeszcze raz...!!

pozdrawiam

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
skrypt do pingowania komputerów w sieci
« Odpowiedź #5 dnia: 2010-12-21, 10:22:39 »
#!/bin/bash

PC1="192.168.1.10"
PC2="192.168.1.11"
N=3

n=0
while true; do
  ! ping -n -q -c 1 $PC1 && \\
  ! ping -n -q -c 1 $PC2 && \\
  n=$(expr $n + 1) || n=0
  [ $n -ge $N ] && shutdown -h now
  sleep 300
done

styko

  • Gość
skrypt do pingowania komputerów w sieci
« Odpowiedź #6 dnia: 2010-12-21, 14:37:18 »
Dzięki wielkie ultr. Idealnie działa i pasuje jak ulał.

Teraz tylko odpalić to na ESXI :)

Pozdrawiam

sofix

  • Gość
skrypt do pingowania komputerów w sieci
« Odpowiedź #7 dnia: 2011-01-22, 19:12:52 »
Jestem nowy nie wiem czy mogę przerobić skrypt na własne potrzeby.

chciałem żeby emaila wysyłał myślałem że jest to proste i wpisałem zamiast shutdown - h now linike
cat "wiadomość od urządzeń" | mail -s "nie dochodzą pingi" przykładowy@gmail i emaile nie dochodzą. Mam zainstalowany pakiet mail mailx mailto i mimo tego wiadomości nie dochodzą