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, 21884 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
Windows 10

PC startet nach Task herunterfahren nicht mehr automatisch

gelöst Frage von Diddi-tbWindows 1015 Kommentare

Hallo zusammen, ich habe folgendes Problem: über die Aufgabenplanung wird mein PC jeden Tag um 18:00 Uhr heruntergefahren. Ich ...

Linux Desktop

Linux Mint automatische Anmeldung deaktivieren

gelöst Frage von lasterLinux Desktop4 Kommentare

Hallo, habe Linux Mint 18 Sarah xfce 64 Bit installiert. Am Anfang hatte ich die automatische Anmeldung eingestellt, ist ...

Windows 10

Automatisches Kopieren von Win10Prof nach Linux mit SMB

Frage von Gerri3dWindows 106 Kommentare

Hallo, die Berechtigungen habe ich schon gesetzt, also auf Linuxseite hat jeder Vollzugriff. Ich kann über SMB u SFTP ...

Windows 7

Herunterfahren protokollieren

Frage von SarekHLWindows 731 Kommentare

Hallo zusammen, bei einem PC in unserem Gemeindebüro dauert das Herunterfahren ewig, teilweise bricht der Pfarrer den Vorgang nach ...

Neue Wissensbeiträge
Microsoft
Shadow Defender
Tipp von Hyrule vor 5 StundenMicrosoft

Ich denke viele kennen es: Ein Update oder ein neues Programm und vieles funktioniert nicht mehr wie gewünscht. Die ...

Microsoft
Microsoft verarztet 50 Sicherheitslücken
Tipp von Hyrule vor 4 TagenMicrosoft

Microsoft verarztet mal wieder ein "paar" Sicherheitslücken in ihren Produkten: Und mal wieder Remote Code Execution und der abartige ...

Sicherheit

Prüfskript gegen Spectre und Co. wurde erweitert

Tipp von DerWoWusste vor 5 TagenSicherheit

Moin. Get-SpeculationControlSettings sagt sicherlich den meisten etwas. Mit den neuen Spectrevarianten muss man nun weitere Schritte machen, um zu ...

LAN, WAN, Wireless

IPhone und iPad scheinen Verbindungsprobleme mit Unifi v5.7.23 und 802.11r (schnelles Roaming) zu haben

Erfahrungsbericht von StefanKittel vor 8 TagenLAN, WAN, Wireless4 Kommentare

Hallo, vielleicht hilft dieser recht kurze Bericht doch den Einen oder Anderen. Ausgangspunkt Ein Kunde von mir setzt einen ...

Heiß diskutierte Inhalte
Hyper-V
Hyper V startet nicht wenn eine Offline geschaltene HD integriert wird
Frage von DieAzubinneHyper-V11 Kommentare

Hallö, bei einem PC der mit Windows 10 Pro installiert ist habe ich das Problem, dass der Virtuelle PC ...

CPU, RAM, Mainboards
ASUS P5W DELUXE startet nur manchmal und nur mit 2 GraKas
Frage von Windows10GegnerCPU, RAM, Mainboards10 Kommentare

Hallo, ich habe das o.g. Motherboard erhalten. Egal ob C2D 8400, Pentium D 945 oder P4 670, das teil ...

Virtualisierung
Virtuelle Maschinen langsam unabhängig vom Hypervisor
gelöst Frage von HyruleVirtualisierung8 Kommentare

Hallo, ich möchte gerne zwei bis drei virtuelle Maschinen virtualisieren, darauf sollen jeweils Windows 10 und diverse etwas größere ...

Rechtliche Fragen
Vorlage "private Nutzung dienstlicher Mobiltelefone"
Frage von linos2Rechtliche Fragen8 Kommentare

Hallo zusammen, ich bin auf der Suche nach einer Vorlage für die private Nutzung von dienstlichen Mobiltelefonen. Unsere Firma ...