Strona 1 z 1

Zdalne wyłączenie komputera

: 01 listopada 2009, 20:20
autor: rolnikov
Witam,
Próbowałem napisać skrypt, który by się wykonywał podczas zamykania mojego systemu, i wyłączałby zdalny serwer.

Kod: Zaznacz cały

#!/bin/sh
echo "zombie shutting down..."
ssh rolnikov@zombie 'sudo halt'
Dodałem taki skrypt do /etc/init.d/, następnie:

Kod: Zaznacz cały

sudo update-rc.d zombieShuttingDown start 20 0 . 
Kiedy wykonuję go ręcznie, to serwer się wyłącza, ale skrypt nie uruchamia się kiedy zamykam swój system.
Ktoś mi powie dlaczego?

: 01 listopada 2009, 20:39
autor: lessmian2
A sprawdziłeś czy skrypt odpalony z palca działa? Tzn. czy drugi komputer się wyłącza?

Edycja
Przepraszam, krzywo czytałem ;-)
ktoś mi powie dlaczego ?
A to dla tego że zamiast przy zamykaniu, to skrypt uruchamia się przy starcie systemu. Zamień start na stop i dopasuj runlevele.

: 02 listopada 2009, 18:23
autor: rolnikov
Przecież:

Kod: Zaznacz cały

 runlvl 0
to jest zamykanie systemu, a start, to polecenie aby wykonać wspomniany skrypt, mylę się?

: 02 listopada 2009, 18:47
autor: Rad
Zauważ, że skrypt jest wywoływany w ten sposób:

Kod: Zaznacz cały

 /etc/init.d/zombieShuttingDown start
Jednak w twoim skrypcie nie ma wzorca start i pewnie stąd ten problem. Spróbuj czegoś takiego:

Kod: Zaznacz cały

#!/bin/sh
case "$1" in
   start)
   echo "zombie shutting down..."
   ssh rolnikov@zombie 'sudo halt' 
esac
exit 0
Polecam zapoznać się z /etc/init.d/skeleton

: 02 listopada 2009, 19:08
autor: lessmian2
Przepraszam, za wprowadzenie w błąd. Tak to jest jak się najpierw mana nie doczyta. W każdym bądź razie nie powinno robić różnicy czy dasz parametr start czy stop, bo w Twoim skrypcie i tak nie jest on uwzględniany. Więc teraz pytanie z tych głupszych. Skrypt ma atrybut wykonywalności? Możesz też spróbować podać pełne ścieżki do binarek i sprawdzić czy to pomoże.

: 03 listopada 2009, 15:54
autor: Utumno
Widzę dwie możliwości:

1) skrypt odpala się za pózno, np już w momencie kiedy sieć nie działa. Pokaż jak dodałeś ten skrypt
2) skrypt sie odpala, ale 'sudo halt' żąda hasła.

W ogóle, debugowanie tego przypadku zacząłbym od sprawdzenia, czy skrypt w ogóle sie loguje na zdalny serwer. Sprawdź to w jego /var/log/auth.log

: 03 listopada 2009, 22:39
autor: rolnikov
Generalnie chyba chodziło o ten parametr ,,start''.

Z palca:

Kod: Zaznacz cały

/etc/init.d/zombieShutDown start
działa.

Dziś zobaczę podczas zamykania systemu.

EDIT:
Cóż, przy zwykłym wyłączaniu nie zadziałał. Nie widzialem w komunikatach przy wyłączaniu mojego napisu który znajduje sie w skrypcie. Więc tak jakby się wogóle nie odpalil :| żadne haslo nie jest potrzebne (ustawione ssh i sudo).

EDIT2:
Przed wejściem do dowolnego poziomu startu wszystkie skrypty zaczynające się literą 'K' zostaną uruchomione. Te skrypty usuwają usługi. Następnie wykonane zostaną wszystkie skrypty zaczynające się literą 'S'.
Jeśli rzeczywiście tak jest... to teoretycznie rzeczywiście zatrzyma najpierw działanie sieci. Hmm spróbuje dać parametr stop i jak najniższy priorytet.

EDIT 3:
Teraz już działa:
Plik zombieShutDown:

Kod: Zaznacz cały

#!/bin/sh
case "$1" in
 stop)
echo 'ZOMBIE SHUTTING DOWN'
su - rolnikov -c "ssh rolnikov@zombie 'sudo halt'"

esac
exit 0
Update:

Kod: Zaznacz cały

update-rc.d zombieShutDown stop 20 0 .