Witam.
Drodzy Państwo. Mam mały problem, który może wydać się trywialny jednakże przekracza moje skromne zdolności pojmowania temat.
Mianowicie chodzi mi o skrypt wyłączający komputer, kiedy nie można spingować innej maszyny.
Sytuacja jest taka, że mamy 4 serwery - win serw 2008 R2 (na jednym 3 maszyny wirtualne co daje w sumie 7 serwerów) w serwerowni i 2 upsy. 2 serwery są bezpośrednio połączone kabelkiem do UPSA i w razie awarii prądu wyłączają się za pomocą dołączonego oprogramowania. Problem tkwi w maszynach wirtualnych i 1 z wolnostojących serwerów.
W razie awarii nie ma możliwości ich wyłączenia bo po prostu nie wiedzą, że zaraz upsy padną. Wymyśliłem sobie taką sytuację, że serwery nie podłączone do UPSów będą wysyłać ping powiedzmy co 3 minuty w kierunku dwóch podłączonych do upsa serwerów i jak nie dostaną odpowiedzi (znaczy się, że serwery wyłączyły się samoczynnie z powodu braku prądu) rozpoczną procedurę zamykania systemu.
Problem w tym, że to musi odbywać się systematycznie, gdzieś w tle, ping co 3 minuty powiedzmy.
Już parę razy próbowałem z pomocą różnych użytkowników to napisać jednakże za każdym razem coś nie działa.
Mój pierwszy kod jakiego użyłem to
#!/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
Następnie pierwsza propozycja jednego z użytkowników
#!/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
i druga
#!/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
Czy możecie stwierdzić co tutaj jest źle, że nie działa tak jak powinno???Odpalając plik .bat (w każdym z tych kodów) po prostu przleatuje mi czarny ekran, znika i nic się kompletnie nie dzieje. Nie wiem czy w tle to działa, i raczej nie bo pingowane są IP, które nie mają prawa na ping odpowiedzieć, co powinno od razu zamykać system.
Wdzięczny byłby bardzo za podpowiedź co tu zrobić i zmienić żeby zadziałało.