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
Kod: Zaznacz cały
#!/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
Kod: Zaznacz cały
#!/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
Kod: Zaznacz cały
#!/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
Wdzięczny byłby bardzo za podpowiedź co tu zrobić i zmienić żeby zadziałało.