Server abschalten, wenn alle Clients offline sind?
Hilfe bei der Erstellung eines shutdown Skriptes unter Windows Server 2008 R2
Hallo zusammen,
ich habe bei mir Zuhause einen kleinen Server eingerichtet, welchen ich als File-, Print-, Backupserver nutze. Da ich Student bin, habe ich die Möglichkeit genutzt über das Hochschulprogramm mir Windows Server 2008 r2 zu beschaffen. Ich betreibe den Server also zum Testen, Lernen und verzweifeln ;)
In Zukunft wird unser Hausnetzwerk weiter ausgebaut. Derzeit versorgt der Server etwa 10 Geräte mit Daten.
Da ich aber den Server nicht den ganzen Tag laufen lassen möchte, habe ich mich an die Programmierung eines kleines Batchskripts gemacht.
Ich habe mir als erstes überlegt, wie ich überprüfen kann, ob alle Clients offline sind. Hier zu nutze ich erst mal einen simplen Pingtest:
Dieser klappt an sich auch. Jedoch gibt es 2 Laptops, welchen ich keine feste IP vergeben kann.
Hier zu meinem Problem:
Danach dachte ich, net view gibt eine Liste aller im Netzwerk verfügbaren Computer aus. Wie kann ich diese ausgegebenen Infos in einem Skript verwenden UND eine Ping-Anfrage an eine feste IP Adresse schicken.
Also nochmal in Kurzform:
Server soll Netzwerk nach PCs und Netzwerkgeräten scannen. Falls keines erreichbar ist, soll der Server nach der Zeit X abschalten. Das Skript soll alle Y Minuten durchlaufen (Dieses könnte man ja einfach über die Taskaufgaben regeln).
Gestartet wir dieser wieder normal über WOL.
Ich würde mich über Hilfe sehr freuen. Google und die Forensuche habe ich bereits gequält, jedoch komme ich nicht hinter die Abfrage des net view Ergebnisses.
Bitte Steinigt mich nicht, wenn ich die Frage im falschen Unterforum gestellt habe. Dies ist mein erster Post. Ich nutze diese Site aber immer wieder gerne um Probleme zu lösen.
Vielen Dank im Voraus.
Hallo zusammen,
ich habe bei mir Zuhause einen kleinen Server eingerichtet, welchen ich als File-, Print-, Backupserver nutze. Da ich Student bin, habe ich die Möglichkeit genutzt über das Hochschulprogramm mir Windows Server 2008 r2 zu beschaffen. Ich betreibe den Server also zum Testen, Lernen und verzweifeln ;)
In Zukunft wird unser Hausnetzwerk weiter ausgebaut. Derzeit versorgt der Server etwa 10 Geräte mit Daten.
Da ich aber den Server nicht den ganzen Tag laufen lassen möchte, habe ich mich an die Programmierung eines kleines Batchskripts gemacht.
Ich habe mir als erstes überlegt, wie ich überprüfen kann, ob alle Clients offline sind. Hier zu nutze ich erst mal einen simplen Pingtest:
ping 192.168.2.10 || ping 192.168.2.20 [...] || ping 192.168.2.90 || shutdown -s -f -t 00
Dieser klappt an sich auch. Jedoch gibt es 2 Laptops, welchen ich keine feste IP vergeben kann.
Hier zu meinem Problem:
Danach dachte ich, net view gibt eine Liste aller im Netzwerk verfügbaren Computer aus. Wie kann ich diese ausgegebenen Infos in einem Skript verwenden UND eine Ping-Anfrage an eine feste IP Adresse schicken.
Also nochmal in Kurzform:
Server soll Netzwerk nach PCs und Netzwerkgeräten scannen. Falls keines erreichbar ist, soll der Server nach der Zeit X abschalten. Das Skript soll alle Y Minuten durchlaufen (Dieses könnte man ja einfach über die Taskaufgaben regeln).
Gestartet wir dieser wieder normal über WOL.
Ich würde mich über Hilfe sehr freuen. Google und die Forensuche habe ich bereits gequält, jedoch komme ich nicht hinter die Abfrage des net view Ergebnisses.
Bitte Steinigt mich nicht, wenn ich die Frage im falschen Unterforum gestellt habe. Dies ist mein erster Post. Ich nutze diese Site aber immer wieder gerne um Probleme zu lösen.
Vielen Dank im Voraus.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 178395
Url: https://administrator.de/contentid/178395
Ausgedruckt am: 24.11.2024 um 06:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo Kamper,
nmap für Windows ist hier das richtige für Dich.
Viele Grüße,
Martin
nmap für Windows ist hier das richtige für Dich.
Viele Grüße,
Martin
Hallo Kamper und willkommen im Forum!
Um aus einer "
verwenden.
Um eine beliebige Anzahl von Namen bzw Adresssen per "
In Zeile 2 ist "Servername" durch den Namen Deines Servers zu ersetzen - benötigt wird der Name, da der Server im "
Es schadet übrigens nicht, wenn ein Rechner mit statischer Adresse auch "namentlich" noch mal geprüft wird - mit "
Grüße
bastla
Um aus einer "
net view
"-Ausgabe alle gefundenen Geräte(namen) zu erhalten, könnntest Du eine Schleife der Artfor /f "delims=\" %%i in ('net view^|findstr "\\"') do
Um eine beliebige Anzahl von Namen bzw Adresssen per "
ping
" zu überprüfen, würde ich einen Schalter und je eine Schleife etwa so verwenden:@echo off & setlocal
set "Server=Servername"
set "AlleAus=true"
for %%i in (192.168.2.10 192.168.2.20 192.168.2.90) do ping -n 1 %%i>nul && set "AlleAus="
for /f "delims=\" %%i in ('net view^|findstr "\\"^|findstr /i /v "%Server%"') do ping -n 1 %%i>nul && set "AlleAus="
if defined AlleAus shutdown -s -f -t 00
net view
"-Ergebnis aufscheint.Es schadet übrigens nicht, wenn ein Rechner mit statischer Adresse auch "namentlich" noch mal geprüft wird - mit "
ping -n 1
" wird nur 1 Datenpaket anstatt der defaultmäßigen 4 verschickt, wodurch die oben skizzierte (ungetestete) Variante noch immer schnneller sein sollte, als Deine ursprüngliche Version ...Grüße
bastla
Hallo Kamper!
Zur Kontrolle kannst Du vor und nach der Zeile 5 jeweils eine Zeile
einfügen, um den Status der Variablen anzuzeigen.
Eine andere Schreibweise für
wäre noch
- damit wird nicht anhand des Errorlevels (der allerdings ab XP funktionieren sollte) geprüft, sondern die Ausgabe auf den Textteil "TTL" (den es nur bei einem erfolgreichen "
Grüße
bastla
Er setzt trotz erfolgreichem anpingen der ersten ip auf "AllesAus"
Eigentlich wird nicht auf "AllesAus" gesetzt, sondern die Variable %AlleAus% gelöscht (da eben der erfolgreiche "ping
" beweist, dass nicht "alle aus" sind ...Zur Kontrolle kannst Du vor und nach der Zeile 5 jeweils eine Zeile
set AlleAus
Herunterfahren tut er aber trotzdem nicht :S
Wenn der "shutdown
"-Befehl in der vorherigen Variante funktioniert hat, sollte er es auch jetzt tun (dass der Batch mit Admin-Rechten ausgeführt wird, setze ich mal voraus) - der Grund für das "Nicht-Herunterfahren" kann also eigentlich nur der Inhalt der Variablen %AlleAus% sein - kontrolliere den bitte anhand der oben gezeigten zusätzlichen Zeilen!Eine andere Schreibweise für
ping -n 1 %%i>nul && set "AlleAus="
ping -n 1 %%i|findstr "TTL">nul && set "AlleAus="
ping
" gibt) hin untersucht ...Grüße
bastla