Skocz do zawartości

Automatyczny Skrypt Do Wyłączania Komputera


menth0l

Rekomendowane odpowiedzi

Ponieważ od niedawna mój komputer został bramką internetową dla dwóch innych komputerów pomyślałem sobie że przydałby się jakiś system automatycznego wyłączania komputera kiedy wszyscy klienci też są wyłączeni (po co marnować prąd?).

 

Wymyśliłem sobie, że co jakiś określony czas będę wysyłał pinga do hostów i sprawdzał wyniki. Jeśli oba nie odpowiadają to zamykam system. Oto taki pseudokod:

 

while(1)
{
    logged = who_result();
    result1 = ping(host1);
    result2 = ping(host2);

    if( !logged && !result1 && !result2 )
    {
        shutdown -h now;
    }
    
    sleep 30;
}

 

Nie za bardzo mam jednak pojęcie jak wyciągnąć do zmiennych dane z pinga i who. O bashu mam znikome pojęcie więc może ktoś mnie naprowadzi?

Odnośnik do komentarza
Udostępnij na innych stronach

Pomęczyłem się chwilkę sam i oto co wyskrobałem. Póki co wygląda że działa ;)

#!/bin/bash

SLEEP_TIME=600;
HOST1="192.168.0.4"
HOST2="192.168.0.5"

while [ 1 == 1 ]
do
        echo -e "Sprawdzam aktywność hostów: `date -R`";
                
        alive1=`ping $HOST1 -c 1 | grep errors | awk '{print $4};'`;
        alive2=`ping $HOST2 -c 1 | grep errors | awk '{print $4};'`;

        if [ "$alive1" == 0 -a "$alive2" == 0 ]
        then
                sudo /sbin/poweroff;
        fi

        echo -e "Przynajmniej jeden host jest aktywny. Następny test za $SLEEP_TIME sekund";
        sleep $SLEEP_TIME;
done

 

To mój pierwszy przydatny skrypt w bashu więc nie śmiać się ;)

 

jak zrobisz automatyczne włączanie komputera jeśli ktoś jednak będzie chciał skorzystać z internetu?

Przyjdzie do mnie do pokoju i włączy sobie komputer :) Ten skrypt ma działać głównie na noc, żeby komp niepotrzebnie nie chodził jak już wszyscy pójdą spać.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 weeks later...

ja bym zmodyfikowal go tak, ze jesli nie wykryje ktoregos z pingow, to czeka 5 min i sprawdza znowu. jesli ponownie sie nie uda, to wylacza kompa.

 

Poza tym radzilbym zmienić:

alive1=`ping $HOST1 -c 1 | grep errors | awk '{print $4};'`;

 

na

 

alive1=`ping $HOST1 -c 1 | grep errors | cut -f4 -d' '`;

 

i analogicznie dla alive2. Wiem, ze sie moze czepiam, ale wywolywanie dla takiego czegos awk to juz lekka przesada, a cut jest do tego wrecz stworzony.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...