Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Linux-Server soll automatisch herunterfahren!

Mitglied: DonniDuck

DonniDuck (Level 1) - Jetzt verbinden

06.11.2006, aktualisiert 07.05.2008, 22049 Aufrufe, 16 Kommentare

Der Linux-Server (Ubuntu-6.06) soll sich automatisch ausschalten, wenn keine Clients mehr im Netz sind, wie kann man dies lösen?

Hallo,

ich möchte gerne einen Linux-Server (Ubuntu-6.06) automatisch herunterfahren. Dieser sollte aller 5 Minuten nachsehen ob noch Clientrechner im Netzwerk vorhanden sind. Sollte noch ein Client aktiv sein, dann wird die Routine einfach abgebrochen.

Ist kein Client mehr im Netz, dann soll der Server sich nach einer Minute ausschalten (Textmeldung ausgeben, Piepston am Server soll erzeugt werden).

1.
Kann die Textmeldung nur am Linux-Server ausgegeben werden oder auch an den Windows-Clients?

2.
Der Server soll natürlich bestimmte "Clients" ignorieren, wie z.B. den Router und den Netzwerkdrucker!

3.
Vor dem Herunterfahren soll der Server noch ein bestimmtes Verzeichnis löschen, wie kann man dies mit einbinden (rm –f /home/transfer)?

4.
Kurz vor dem Herunterfahren (z.B. 20 Sekunden) soll der Server eine Warnmeldung an den Summer ausgeben (regelmäßiges Piepsen)!

5.
Ich habe mich im Internet schon einmal umgesehen und habe herausgefunden, dass man dies mit der Sprache Shell lösen kann. Da ich mich mit dieser Thematik noch nicht sehr stark befasst habe, wäre es schön wenn ihr mir ein paar Tipps bzw. Lösungsansätze geben könnt!

Gruß Donni Duck!
Mitglied: 6890
06.11.2006 um 17:03 Uhr
hallo,

ja das kann man mit einem shell script lösen.
ich würde es so machen:

01.
#!/bin/bash
02.
 
03.
#datei wo die ips der clients drinne sind
04.
CLIENTS=`grep /DATEI/DER/CLIENTS`
05.
 
06.
#verzeichnis was gelöscht werden soll
07.
DELETE=/home/transfer
08.
 
09.
for i in $CLIENTS
10.
do
11.
      ping -c 4 $i
12.
      if test $? -eq 0
13.
      then
14.
             echo "$i ist erreichbar"
15.
      else
16.
             rm -rf $DELETE
17.
             echo "Der Server wird heruntergefahren..."
18.
             sleep(20)
19.
             init 0
20.
             exit
21.
      fi
22.
done
das mit dem piepsen weis ich leider ni, und das script würde ich vorher auch testen (is jetzt so auf die schnelle geschrieben)

mfg godlike P
Bitte warten ..
Mitglied: DonniDuck
06.11.2006 um 18:22 Uhr
Super,

das hilft mir erst einmal weiter!

Einige Fragen noch:

1.
Die Datei, wo die Clients eingetragen sind, kann mit einem normalen Editor erstellt werden (vi, nano)?

2.
Wie sollte diese Datei aufgebaut sein:

192.168.115.1;192.168.115.2;192.168.115.3 usw.

3.
Wenn ich dies richtig interpretiere ist i eine Variable und steht für die IP-Adressen der Clients, mit welcher Routine bzw. Befehl werden die einzelnen IP´s angesprochen?

4.
Gibt es eine Art Zähler oder eine Konstante, denn der Befehl Ping muss ja z.B. 3 x (für 3 Clients) durchgeführt werden!

5.
Könntest du die wichtigen Zeilen kurz kommentieren (Einsteiger in Shell)?

Danke und Gruß Donni!
Bitte warten ..
Mitglied: 6890
07.11.2006 um 17:30 Uhr
1.
Die Datei, wo die Clients eingetragen sind,
kann mit einem normalen Editor erstellt
werden (vi, nano)?
ja
2.
Wie sollte diese Datei aufgebaut sein:

192.168.115.1;192.168.115.2;192.168.115.3
usw.
nein eher so ohne leerzeilen etc, einfach nacheinander pro zeile 1 ip):
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
usw

3.
Wenn ich dies richtig interpretiere ist i
eine Variable und steht für die
IP-Adressen der Clients, mit welcher Routine
bzw. Befehl werden die einzelnen IP´s
angesprochen?
for i in $CLIENTS bedeutet gehe jede ip in $CLIENTS durch und setze sie in i ein
4.
Gibt es eine Art Zähler oder eine
Konstante, denn der Befehl Ping muss ja z.B.
3 x (für 3 Clients) durchgeführt
werden!
keine ahnung was du meinst
5.
Könntest du die wichtigen Zeilen kurz
kommentieren (Einsteiger in Shell)?
ja könnt ich
01.
#!/bin/bash 
02.
#datei wo die ips der clients drinne sind
03.
CLIENTS=`grep /DATEI/DER/CLIENTS`
04.
 
05.
#verzeichnis was gelöscht werden soll
06.
DELETE=/home/transfer
07.
 
08.
#gehe alle ips durch und setze sie in i ein
09.
for i in $CLIENTS
10.
do
11.
      #ping die ip die in $i steht an
12.
      ping -c 4 $i
13.
      #wenn es erfolgreich war
14.
      if test $? -eq 0
15.
      then
16.
             #gebe das aus
17.
             echo "$i ist erreichbar"
18.
      #ansonsten
19.
      else
20.
             #lösche das transfer verzeichnis
21.
             rm -rf $DELETE
22.
             #gebe das aus
23.
             echo "Der Server wird heruntergefahren..."
24.
             #warte 20 sekunden
25.
             sleep(20)
26.
             #fahre den server herunter
27.
             init 0
28.
             #beende das script
29.
             exit
30.
      fi
31.
done
Danke und Gruß Donni!
bitte
mfg godlike P
Bitte warten ..
Mitglied: DonniDuck
08.11.2006 um 16:39 Uhr
Ich habe jetzt mal deine Shell-Routine ausprobiert:

01.
#!/bin/bash
02.
 
03.
#Datei wo die IPs der Clients hinterlegt sind
04.
CLIENTS="grep /etc/skripte/auto-shutdown-ips.dat"
05.
 
06.
for i in $CLIENTS
07.
do
08.
        ping -c 4 $i
09.
        if test $? -eq 0
10.
        then
11.
                echo "$i ist erreichbar!"
12.
        else
13.
                echo "Der Server wird in 20 Sekunden heruntergefahren..."
14.
                sleep 20
15.
                init 0
16.
                exit
17.
        fi
18.
done
19.
 
Folgende Änderung habe ich noch vorgenommen:

1.
sleep 20 statt sleep (20)...durch den Befehl
sh -n /etc/skripte/auto-shutdown.sh
war ein Fehler angezeigt

Das Problem:

Der Server fährt wunderbar herunter, aber leider auch immer, wenn ich den Testbefehl ausführe:

sh -x /etc/skripte/auto-shutdown.sh

Ich bekomme nur die Fehlermeldung:


ping: unknown host grep


Also wird der Ping-Test nicht durchgeführt bzw. er kann sich die Daten nicht aus der /etc/skripte/auto-shutdown-ips.dat holen!

In dieser Datei steht aber nur:

01.
192.168.115.32
Wenn ich den Rechner ganz normal anpinge geht es! Was ist das Problem?

Gruß Donni!
Bitte warten ..
Mitglied: 6890
08.11.2006 um 16:45 Uhr
Ich habe jetzt mal deine Shell-Routine
ausprobiert:

<code>
#!/bin/bash
#Datei wo die IPs der Clients hinterlegt
sind
CLIENTS="grep
/etc/skripte/auto-shutdown-ips.dat"

ja weil das "" falsch ist !!! deswegen bekommt er keine ips!!
da müssen anstatt hochkommas sogenannte backticks (shift + das zeichen rechts von ß) hin.
denn dann interpretiert die shell das als kommando und führt grep blabla aus und schreibt das ergebnis in die variable!!!

mfg godlike P
Bitte warten ..
Mitglied: DonniDuck
08.11.2006 um 17:06 Uhr
So habe jetzt mal die Änderung vorgenommen, leider zeigt er aber nur folgendes an:

grep /etc/skripte/auto-shutdown-ips.dat

Nichts passiert und nach etwa 5 Minuten wird die Routine abgebrochen bzw. manueller Benutzerabbruch!
Bitte warten ..
Mitglied: 6890
08.11.2006 um 17:23 Uhr
ahh sorry ich bin bescheuert da muss natürlich cat statt grep hin

also CLIENTS=`cat /etc/skripte/auto-shutdown-ips.dat`

sorry sorry sorry

mfg
Bitte warten ..
Mitglied: DonniDuck
08.11.2006 um 17:48 Uhr
Jetzt wird es aber langsam richtig spannend!

Also der Befehl funktioniert.... ABER:

wenn z.B. ein Rechner an und einer aus ist, wird trotzdem der Rechner heruntergefahren, müsste man nicht irgendwie alle IPs logisch und verknüpfen?
Bitte warten ..
Mitglied: 6890
08.11.2006 um 18:23 Uhr
ahso hmmja eigentlich schon
dann halt so:
01.
#!/bin/bash 
02.
#Datei wo die IPs der Clients hinterlegt sind
03.
CLIENTS=`grep /etc/skripte/auto-shutdown-ips.dat`
04.
 
05.
for i in $CLIENTS
06.
do
07.
        ping -c 4 $i
08.
        if test $? -eq 0
09.
        then
10.
                a=1
11.
        fi
12.
done
13.
 
14.
if test $a -ne 1
15.
then
16.
       echo "Der Server wird in 20 Sekunden heruntergefahren..."
17.
       sleep 20
18.
       init 0
19.
       exit
20.
fi
d.h. wenn einer erreichbar ist wird a auf 1 gesetzt und das script läuft normal durch und wenn a nicht gleich 1 ist, also keiner an ist, fährt derserver runter
mfg
Bitte warten ..
Mitglied: DonniDuck
08.11.2006 um 18:42 Uhr
Ich habe mal etwas gegoogelt:

Also:

$? steht doch für:

"gibt den Return-Code des zuletzt ausgeführten Kommandos an (0 bei erfolgreicher Ausführung)"

für was steht denn -eq 0 (...wenn gleich Null)??

Wenn also der Ping z.B. 5 mal ausgeführt wird, sind dies doch 5 einzelne Kommandos, die Folge ist doch, dass nur der letzte Ping hier ausgewertet wird.... oder???

Deshalb meine Frage zum Anfang mit einem Puffer (Stack)!
Bitte warten ..
Mitglied: 6890
08.11.2006 um 18:54 Uhr
nee das is doch ne schleife (for) deswegen wird jeder ping ausgewertet!!

mfg
Bitte warten ..
Mitglied: DonniDuck
08.11.2006 um 19:21 Uhr
Ich habe es jetzt mal mit 4 Rechnern getestet:

Alles läuft nur bei der Option "Alle aus" (Server soll sich ausschalten) kommt folgende Meldung:

01.
+ test 1 -eq 0
02.
+ test -ne 1
03.
/etc/skripte/auto-shutdown.sh: line 16: test: -ne: unary operator expected
Was ist jetzt los?

Danke für deine Unterstützung!!!
Bitte warten ..
Mitglied: DonniDuck
08.11.2006 um 19:36 Uhr
Hier noch einmal das aktuelle Skript:

01.
#!/bin/bash
02.
#Datei wo die IPs der Clients hinterlegt sind
03.
CLIENTS=`cat /etc/skripte/auto-shutdown-ips.dat`
04.
 
05.
for i in $CLIENTS
06.
do
07.
        ping -c 4 $i
08.
        if test $? -eq 0
09.
        then
10.
                a=1
11.
                echo "$i ist erreichbar!"
12.
        fi
13.
done
14.
 
15.
if test $a -ne 1
16.
then
17.
        echo "Der Server wird in 20 Sekunden heruntergefahren..."
18.
        sleep 20
19.
        init 0
20.
        exit
21.
fi
Bitte warten ..
Mitglied: 6890
08.11.2006 um 20:05 Uhr
probiers mal so:

01.
#!/bin/bash #Datei wo die IPs der Clients hinterlegt sind
02.
CLIENTS=`cat /etc/skripte/auto-shutdown-ips.dat`
03.
a=0
04.
 
05.
for i in $CLIENTS
06.
do
07.
        ping -c 4 $i
08.
        if test $? -eq 0
09.
        then
10.
                a=1
11.
                echo "$i ist erreichbar!"
12.
        fi
13.
done
14.
 
15.
if test $a -ne 1
16.
then
17.
        echo "Der Server wird in 20 Sekunden heruntergefahren..."
18.
        sleep 20
19.
        init 0
20.
        exit
21.
fi
Bitte warten ..
Mitglied: DonniDuck
09.11.2006 um 09:31 Uhr
Hurra es funktioniert!

Super gemacht godlike P!

Noch eine kleine Zusatzaufgabe....Während der Wartezeit soll der Benutzer die Möglichkeit haben den Vorgang abzubrechen!

Wie kann man dies lösen? Die Tastatur muss ja abgefragt werden!

Meine Vorstellung:

01.
if test $a -ne 1
02.
then
03.
        echo "Der Server wird in 20 Sekunden heruntergefahren..."
04.
        sleep 20
05.
        echo ".... Möchten Sie den Autoshutdown abbrechen, dann betätigen Sie die Taste "e"!!!"  
06.
                      if test "Taste e gedrückt -eq 0"
07.
                      then
08.
                      echo "Abbruch des Auto-Shutdowns durch Benutzer $Benutzername"
09.
                      exit
10.
                     fi
11.
        init 0
12.
        exit
13.
fi
14.
 
15.
 
Gruß in meine Heimat
Donni Duck
Bitte warten ..
Mitglied: DanielSGE
07.05.2008 um 14:36 Uhr
Hallo! Nach solch einen Skript hab ich auch schon seit Tagen Ausschau gehalten. Wäre es aber möglich noch etwas einzubauen?

Gut wäre es nämlich wenn dieses Überprüfung noch ein weiteres Mal durchgeführt würde. Also nicht, dass der eine Rechner, der verbunden ist, gerade rebootet und plötzlich ist der Server aus.

Wäre für ein bisschen Hilfe sehr dankbar;)

Gruß

Daniel
Bitte warten ..
Ähnliche Inhalte
Drucker und Scanner
Automatisch Drucken
Frage von manu90Drucker und Scanner7 Kommentare

hi zusammen, wir haben einen Tintenstrahldrucker im Einsatz der läuft immer Gefahr, dass die Tinten eintrocknen weil der nicht ...

Samba
Linux Server und Windows Linux Client
gelöst Frage von 137898Samba17 Kommentare

Hallo, ich bräuchte dringend bei der Aufgabe etwas Hilfe. Die Firma XYZ besteht auf zwei Abteilungen Logistik und Technik ...

Debian
Linux Tablet
gelöst Frage von djevil-adDebian12 Kommentare

Hi, ich möchte mir gerne ein günstiges, gebrauchtes Tablet (50€) in der Bucht schiessen, auf dem ich ein BELIEBIGES ...

Cluster
Linux Failover
gelöst Frage von akadawaCluster3 Kommentare

Hallo liebe Community, Ich soll eine MySQL-Datenbank, welche auf einem physischen Server (Debian) läuft , in einer virtuellen Maschine ...

Neue Wissensbeiträge
Erkennung und -Abwehr
OpenSSH-Backdoor Malware erkennen
Tipp von Frank vor 34 MinutenErkennung und -Abwehr

Sicherheitsforscher von Eset haben 21 Malware-Familien untersucht. Die Malware soll Hintertüren via OpenSSH bereitstellen, so dass Angreifer Fernzugriff auf ...

iOS
WatchChat für Whatsapp
Tipp von Criemo vor 3 TageniOS3 Kommentare

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor !!!
Tipp von Criemo vor 3 TageniOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Off Topic
Avengers 4: Endgame - Erster Trailer
Information von Frank vor 5 TagenOff Topic2 Kommentare

Ich weiß es ist Off Topic, aber ich freue mich auf diesen Film und vielleicht geht es anderen hier ...

Heiß diskutierte Inhalte
Windows Server
Einziger Domänencontroller ersetzen - Windows Server 2012R2 - Hostname
Frage von DeRo93Windows Server20 Kommentare

Guten Tag, Leider haben wir einen Domänencontroller dessen Komponentenspeicher defekt ist. Alle Maßnahmen sind da leider fehlgeschlagen. Nun wurde ...

Server-Hardware
WS 2016 Essentials Hardware
Frage von ChefknechtServer-Hardware17 Kommentare

Moin welche Hardware würdet ihr empfehlen? Dell Poweredge HP Proliant Fujitsu Ich bin total konfus was nun nötig ist, ...

Windows Server
Welche Option fürs Windows Server Installations besser
Frage von backitWindows Server16 Kommentare

Hi Zusammen, ich werde unserer AD (SBS 2011) und Exchange 2010 Servern auf neuen physikalischen Server umziehen. ich habe ...

Windows Update
Fehler bei Updates über WSUS
Frage von Hendrik2586Windows Update11 Kommentare

Guten Tag liebe Kolleginen und Kollegen, lang lang ist meine letzte Anfrage her. Hier etwas das mich nun schon ...