Remote OFF

Post Reply
Message
Author
Chrisi

Remote OFF

#1 Post by Chrisi »

Hi

leider hab ich bis jetzt noch sehr wenig programmier- bzw. script- erfahrung >> also muss ich euch mal wieder belasten. <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

also ich brauch ein kleines programm/script, das
- sich automatisch beim herunterfahren ausführt
- möglichst unter windoff und linux läuft (auf meinen clients)
- checkt ob einer meiner clients an ist (mit ping?!)
>> wenn sonst kein anderer client an ist meinen server herunterfährt (über ssh, telnet egal was)
>> und nichts macht wenn ein anderer client noch an ist.

danke danke an alle die mir da hilfestellung leisten können.

mfg chrisi

User avatar
max
Posts: 806
Joined: 14. May 2000 12:55
Location: Ruhrpott

Re: Remote OFF

#2 Post by max »

>leider hab ich bis jetzt noch sehr wenig programmier- bzw. script- erfahrung >> also muss ich euch mal wieder >belasten.

was meinst du wo die Leute hier ihr Wissen herhaben?

>- sich automatisch beim herunterfahren ausführt
man runlevel/system V

>- möglichst unter windoff und linux läuft (auf meinen clients)
wie bitte?

>- checkt ob einer meiner clients an ist (mit ping?!)
x=0
ping -c 1 $client && x=1

>> wenn sonst kein anderer client an ist meinen server herunterfährt (über ssh, telnet egal was)
[ $x = 1 ] && ssh $server shutdown

Rechnung folgt ...
;<!--no-->-)

Max

Michael

Re: Remote OFF

#3 Post by Michael »

Also du rufst von den Clients ein Script auf dem
Server auf.

bei Linux:

/etc/init.d/rc(RunLevel).d/K99serverdown
ln -fs /etc/init.d/serverdown /etc/init.d/rc(RunLevel).d/K99serverdown

und im script steht sowas (cat serverdown)

ssh downuser@server -c "/usr/bin/downscript"

dazu sollte man public-key Authentifizierung benutzen.

bei Windows

gleiches Prinzip, allerding mit Putty-Tools

Server: (/usr/bin/downscript)

Das Script wertet dann sowas aus:
#Rechner 1 prüfen
$R1=$(ping 192.168.1.1 -c 5 | grep bytes\ from | wc -l)
#Rechner 2 prüfen
$R2=$(ping 192.168.1.2 -c 5 | grep bytes\ from | wc -l)
#berechnen ob irgendein Rechner ein reply geschickt hat
ALIVE=$(expr $R1 + $R2);
#Wenn Anzahl reply 0 dann runterfahren
if [ $ALIVE -eq 0 ] ; then shutdown now ; fi

Hope that helps

Cheers

Michael

Michael

Re: Remote OFF

#4 Post by Michael »

Oops, dann muß es wohl doch

ssh downuser@server /pfad/downscript

heißen.

Cheers

Michael

chrisi

Re: Remote OFF

#5 Post by chrisi »

>>- möglichst unter windoff und linux läuft (auf meinen clients)
>wie bitte?
nun es sollte möglichst ein programm sein, das auf linux und auf windows läuft, da auf meinen clients win und linux drauf ist.

sonst sehr gut aber der befeht "ssh $server shutdown" geht nicht. dann fragt er nach dem login passwort und sagt dann "bash: shutdown: command not found"
das sollte halt ohne irgendwelche passwort fragen und so geschehen.

chrisi

Re: Remote OFF

#6 Post by chrisi »

hi michael

das script könnt man doch auch als cron job auf dem server laufen lassen, das dann alle 5 min oder so ausgeführt wird. dann würd sich der server ausschalten, wenn alle clients aus sind.

#Rechner 1 prüfen
$R1=$(ping 192.168.1.1 -c 5 | grep bytes\ from | wc -l)
#Rechner 2 prüfen
$R2=$(ping 192.168.1.2 -c 5 | grep bytes\ from | wc -l)
#berechnen ob irgendein Rechner ein reply geschickt hat
ALIVE=$(expr $R1 + $R2);
#Wenn Anzahl reply 0 dann runterfahren
if [ $ALIVE -eq 0 ] ; then shutdown now ; fi

ich glaub so könnst dann geht

very thx

mfg chrisi

User avatar
max
Posts: 806
Joined: 14. May 2000 12:55
Location: Ruhrpott

Re: Remote OFF

#7 Post by max »

wie schon Michael sagte.
Du solltest dazu das Public Key Verfahren nutzen.
google danach.
Dann geht das ohne Login.
(Nein, ist nicht unsicher)

Ich habe es absichtlich so geschrieben damit du gezwungen bist dich ein bissel intensiver damit auseinander zu setzen.
Fertige Lösung hier zu erwarten ist nämlich dreist.
Ich würde ein skript schreiben welches eine Liste von Rechnern durchgeht und checkt ob davon einer noch oben, falls nicht dann runterfahren.
(Was ist mit dem Client der das Skript startet?)
Aufruf wäre dann tatsächlich nur einfach per ssh. (ssh user@host "Befehl")
Das geht auch mit putty.

Michael

Re: Remote OFF

#8 Post by Michael »

Die Variante mit dem cronjob ist die einfachste.

ALIVEs=0;

for i in "192.168.1.1 192.168.1.3 192.168.1.5" ; do
ALIVE=[ $ALIVE + $(ping $i -c 5 | grep bytes\ from | wc -l) ]
done

#Wenn Anzahl reply 0 dann runterfahren
if [ $ALIVE -eq 0 ] ; then shutdown now ; fi

Cheers

Michael

Post Reply