Zdalne wy

Tematy związane z oprogramowaniem, instalacją, konfiguracją
rolnikov
Posty: 16
Rejestracja: 08 marca 2008, 13:25

Zdalne wyłączenie komputera

Post 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?
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post 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.
rolnikov
Posty: 16
Rejestracja: 08 marca 2008, 13:25

Post autor: rolnikov »

Przecież:

Kod: Zaznacz cały

 runlvl 0
to jest zamykanie systemu, a start, to polecenie aby wykonać wspomniany skrypt, mylę się?
Rad
Member
Posty: 1208
Rejestracja: 28 czerwca 2006, 15:05

Post 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
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post 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.
Utumno
Beginner
Posty: 432
Rejestracja: 09 listopada 2008, 13:04
Lokalizacja: Gdansk

Post 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
rolnikov
Posty: 16
Rejestracja: 08 marca 2008, 13:25

Post 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 .
ODPOWIEDZ