automatisches herunterfahren mit cron-job

S

schokomoloko

Grünschnabel
hallo alle zusammen,
da ich noch neu hier bin, weiss ich leider nicht ob ich mit meinem problem hier auch richtig bin und mir jemand helfen kann.

ich habe ein kleine lan mit einigen windows-rechnern und einem suse9.3-rechner der via samba eine freigabe im netz hat, auf der alle rechner im netz zugreifen können.
der linux-rechner soll nun nach zeitplan jeden tag automatisch um 18 00 Uhr herunterfahren, was ich mit einem eintrag in die datei "crontab" hinbekommen habe.
der eintrag lautet folgendermassen:
00 18 * * * root /sbin/shutdown -f now (oder so ähnlich)
nun mein problem:
mittels eines pings soll aber vor dem runterfahren geprüft werden, ob noch
einer der rechner an ist; sollte das der fall sein, soll der linux-rechner nicht herunterfahren und alle 10 minuten weiterprüfen bis keiner mehr am netz ist
und dann herunterfahren

achso. was noch wichig ist, alle rechner im netz haben statische IP's

vielen dank schon mal im voraus
 
Zuletzt bearbeitet:
Hallo
Wo ist jetzt dein Problem konkret?
Willst du wissen wie sowas realisierbar ist, oder scheiterst du an deinen Lösungsversuchen?

Im ersten Fall würde ich dir empfehlen, für das shutdown ein Wrapper-Script zu schreiben.
Dieses dann statt des shutdown in die crontab eintragen.

Im zweiten Fall müsstest du deine nicht funktionierenden Codezeilen nebst Problemen hier -> besser im Shell-Forum <- posten.

Gruß Wolfgang
 
das problem ist das ich ein absoluter anfänger auf diesem gebiet bin und leider überhaupt keine ahnung davon habe. ich weiss auch nicht was ein wrapper-script ist.
das mit dem eintrag in der crontab zum runterfahren um 18 uhr habe ich soweit auch hinbekommen, dass es funktioniert.
Was ich wissen wollte ist, ob sich mein eintrag (s. o.) soweit mit einigen befehler erweitern lässt, dass vor dem runterfahren geprüft wird ob noch jemand am netz ist.
und wenn ja, wie dieser eintrag dann aussehen müsste

gruss schokomoloko
 
Hallo
Ein Wrapper-Script bezeichnet ein Script, welches den Befehl beinhaltet. Der Befehl oder die Funktion wird nicht direkt ausgeführt, sondern in ein Script geschrieben, welches diesen dann ausführt.
Der Vorteil ist, dass mehrere Dinge zusätzlich ausgeführt werden können. Wie das folgende Beispiel zeigt.

Code:
$ cat shdown.sh   
[b]                                                                                                   
#!/bin/bash
function slp () {
A=$1; #Parameter sichern
echo "teste $A";
if [ "$(ping -c1 $A )" ];
then
echo "$I ist on";
sleep 5;#5 Sekunden warten
slp $A ;# rekursiv aufrufen, bis der host down ist
else 
return 0;
fi
}
#deine hostliste kann auch aus einer Datei geholt werden
# dann einfach IPLIST=($(cat /pfad/zur/hostliste))

IPLIST=(host1 host2 host3); # anpassen
for I in ${IPLIST[@]}; do
echo "I go test host $I";
# Funktion aufrufen, aktuellen host mitgeben
slp $I
done
echo "Alle genannten Adressen sind off"
echo "Server shutdown wird ausgefuehrt"
/sbin/shutdown -h now "I go sleep now"
[/b]

Ich verwende hier eine Funktion, aber es gibt viele Varianten sowas zu erledigen.
Eventuell sollte man das Warten durch einen Counter begrenzen, und nach x- Warterunden abbrechen.

Wie gesagt ein ungetestetes Rohscript nur als Beispiel gedacht.
Ohne Garantie und doppelten Boden ;)

Inhalt in eine Datei schreiben: ( dein wrapper-Script) ;)
Die Datei ausführbar machen.
Vorhert in der Console testen und anpassen bzw verbessern. ;)

Das trägst du nun mit vollem Pfad statt dem shutdown befehl in deine crontab ein.

thats all folks

Gruß Wolfgang
 
hallo
vielen dank für deine hilfe ich werde es gleich mal ausprobieren

gruss schokomoloko
 
Die Datei kann man per "chmod +x $DATEI" ausführbar machen :)

MFG

Dennis
 

Ähnliche Themen

LINUX crontab shutdown - wieso funktionert es nicht.

fetchmail/cron Konfiguration

Zurück
Oben