Wer kennt es nicht? Der Rechner seiner Schwester / seines Bruders läuft, und die entsprechende Person liegt im Bett und ratzt gemütlich. Die Eltern bitten einen dann, den Rechner herunterzufahren.
Nun hat man zwei Möglichkeiten: Entweder sich vor den anderen Rechner zu setzen und ihn herunterzufahren, oder dies gleich über das Netzwerk zu tun (wenn man denn Benutzernamen und Passwort hat). Da Informatiker ja doch faul sind, werden sich die meisten für die zweite Methode entscheiden. Also an den Rechner anmelden und Shutdown senden. Dazu sind meines Wissens nach mind. 2 Befehle notwendig. Okay, nicht viel, aber nicht immer hat man diese im Kopf, oder man will sich ganz einfach Tipp-Arbeit sparen…
Also hab ich mir gedacht, baust du dir schnell ein Script, welches dir ermöglicht entweder den lokalen oder einen anderen Rechner im Netzwerk herunterzufahren. Solange der Netzwerkrechner noch läuft, soll dies angezeigt werden, ebenfalls, wenn er endlich heruntergefahren ist. Als schneller Aufbau ist dieses Script (shutd.cmd) entstanden:
@echo off cls if "%1" == "" goto help if "%1" == "local" goto local ping %1 >NUL if errorlevel 1 (cls && echo %1 ist offline && goto abort) cls echo %1 ist online ping localhost -n 3 -w 1000 >NUL cls :benutzername echo Bitte Benutzernamen eingeben: set /p benutzername= cls if "%benutzername%" == "" goto benutzername :passwort echo Bitte Passwort eingeben (Achtung: Niemanden ber die Schulter schauen lassen!): set /p passwort= cls if "%passwort%" == "" goto passwort net use \\%1\ipc$ "%passwort%" /USER:"%benutzername%" if errorlevel 1 (echo Es konnte keine Verbindung zum Host hergestellt werden... && goto abort) cls echo Verbindung erfolgreich hergestellt ping localhost -n 3 -w 1000 >NUL shutdown -t 30 -m \\%1 -s if errorlevel 1 (cls && echo Beim Versuch, den Rechner herunterzufahren, ist ein Fehler aufgetreten... && goto abort) cls echo Erfolgreicher Versuch, den Rechner herunterzufahren ping localhost -n 3 -w 1000 >NUL goto test :local shutdown -t 30 -s goto exit :help echo USAGE: echo -------------------------------------------------------------------------------- echo Diese kleine Batch-Datei wurde geschrieben um bequem einen Rechner herunterzu- echo fahren. Dies kann entweder der lokale PC oder ein Rechner im Netzwerk sein. echo. echo Um den eigenen PC herunterzufahren, tippe folgendes ein: echo shutd local echo Dies f„hrt den Rechner, vor dem du (hoffentlich) gerade sitzt, herunter. echo. echo. echo Um einen PC ber das Netzwerk herunterzufahren, gebe folgendes ein: echo shutd [Hostname / IP-Adresse] echo. echo Damit ein PC ber das Netzwerk heruntergefahren werden kann, wird ein gltiges echo Benutzerkonto mit Passwort und den entsprechenden Rechten ben”tigt. Es wird echo zun„chst geprft, ob der Rechner ber das Netzwerk erreichbar ist (Ping), und echo sollte dies der Fall sein, wirst du aufgefordert, einen Benutzernamen und das echo dazugeh”rige Passwort einzugeben. Stimmt das Passwort nicht oder existiert der echo Benutzer auf dem Zielrechner nicht, wird der Vorgang abgebrochen. Sollte alles echo in Ordnung sein, so wird der Rechner anschlieáend (hoffentlich erfolgreich) echo heruntergefahren. Zum Test kann ein Dauer-Ping ausgefhrt werden, um die echo Erreichbarkeit des Rechners zu prfen. pause goto :eof :test cls set benutzername= set passwort= set test=default echo Soll ein Dauer-Ping auf den Zielrechner zum šberprfen des Status ausgefhrt werden? [J/N] set /p test= if /I "%test%" == "J" goto ping if /I "%test%" == "N" goto exit goto test :ping set test= ping localhost -n 3 -w 1000 >NUL cls ping %1 -n 1 -w 1000 >NUL if errorlevel 1 (cls && echo %1 scheint offline zu gehen && goto ping2) cls echo %1 ist noch online goto ping :ping2 ping localhost -n 3 -w 1000 >NUL cls ping %1 -n 1 -w 1000 >NUL if errorlevel 1 (cls && echo %1 scheint offline zu sein && goto ping3) cls echo %1 ist noch online goto ping :ping3 ping localhost -n 3 -w 1000 >NUL cls ping %1 -n 1 -w 1000 >NUL if errorlevel 1 (cls && echo %1 ist mit sehr hoher Wahrscheinlichkeit offline && goto exit) cls echo %1 ist noch online goto ping :abort set benutzername= set passwort= :exit echo.
Das Script ist mit Sicherheit noch nicht optimal, die Umlaute werden hier noch nicht korrekt angezeigt (in der Commandline sollte dies hoffentlich passen), einiges ist doppelt und könnte besser in Call-Subroutines ausgelagert werden, außerdem bin ich dem Ziel noch nicht ganz entgegengekommen, dass die Pings auf den Netzwerkrechner nicht angezeigt, aber dennoch ausgewertet werden. Ansonsten tut es aber von der Grundfunktionalität für mich genau das, was es soll (kurz an einer VM getestet).
Bugs, Verbesserungsvorschläge, Anregungen, Kritik, Lob & Dank sind willkommen, ob sie Ernst genommen werden ist eine andere Frage
Kategorie:
Tags: keine

Mit PsShutdown geht das auch
http://technet.microsoft.com/en-us/sysinternals/bb897541.aspx
Hätte ich aber wieder eine Syntax zum auswendig lernen
Außerdem wollte ich es so machen, dass ich möglichst ohne externe Tools auskomme, mit Überwachung ob der Rechner noch erreichbar oder heruntergefahren ist…
Nimm Linux! Alles Linux! ALLES!
Jede einzelne Distri auf allen Rechnern hier installieren, wa? Oha, dann gibbet glaub ick Probleme mit Dad, der weeß dann doch gar nich mehr was zu tun
Ne Spaß, wenn ich entdlich einen vernünftigen USB-WLAN-Stick / vernünftige PCMCIA-WLAN-Karte für’s Notebook habe, kann man noch mal drüber nachdenken…