Zurück   IP-Symcon Community Forum > IP-Symcon 1.0 > Archiv > Anleitungen / Nützliche PHP Scripte

Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
  #1 (permalink)  
Alt 24.11.08, 12:49
Senior Member
 
Registriert seit: Sep 2008
Beiträge: 147
Standard Schmutziger Trick: Programm auf einem entfernten Rechner ausführen / Remote-Hibernate

Hallo,

vielleicht gibt es ja außer mir noch andere, die sich ärgern dass es unter Windows keinerlei eingebaute Möglichkeit gibt, Befehle auf anderen Rechnern im Netzwerk auszuführen. Mich hat das immer gestört und ich wollte mir auch keine Zusatzsoftware auf den Clients installieren müssen, die ständig im Hintergrund laufen sollte.

In meinem Fall ging es darum, dass ich beim Drücken des "Abwesend"-Schalters wirklich alles ausschalten wollte, was noch im Haus eingeschaltet ist. Auch mein Notebook sollte, sofern es im WLAN ist und läuft, ausgeschaltet werden.

Nun wird sich ein Windowserfahrener Mensch wundern, warum ich nicht einfach den Befehl

Code:
shutdown -s \\192.168.0.196 -f
benutzt habe, der ja genau das tun würde: Den Rechner "notebook" im Netzwerk herunterfahren, sofern die entsprechenden Rechte vorhanden sind.

Leider is das aber nicht die Art wie ich mein Notebook normalerweise herunterfahre. Stattdessen bevorzuge ich den Ruhezustand, weil man aus diesem wesentlich schneller wieder hochfahren kann (keine "Bill-Gates-Gedenkminute") und zudem offene Anwendungen erhalten bleiben und man einfach da weiterarbeiten kann, wo man aufgehört hat.

Also brauchte ich zunächst eine Möglichkeit, den Rechner per Kommandozeile bzw. Programmaufruf in den Ruhezustand zu versetzen und dann noch einen Weg, dies von einem anderen Rechner aus auszulösen.

Im Internet wurde ich, was den Ruhezustand betrifft, schnell fündig. Der Befehl

Code:
c:\windows\system32\rundll32.exe powrprof.dll,SetSuspendState Hibernate
tut, beispielsweise in einer Datei shutdown.cmd auf dem herunterzufahrenden Rechner verpackt, genau dies. Doch wie führe ich sie von einem entfernten Rechner aus?

Das einzige Mittel, mit dem man den Start eines Programms auf einem anderen Rechner im Netzwerk auslösen kann und das bei Windows XP von Haus aus an Bord ist, ist der Taskplaner. Folgendes Skript hilft weiter (.vbs - Visual Basic Script):

Code:
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.exec "at \\192.168.0.196 " + FormatDateTime(time + #00:02:30#, 4) + " /interactive " + chr(34) + "c:\windows\hibernate.cmd" + chr(34)
Das Skript ist natürlich ein Notbehelf, da es das Programm nicht sofort ausführt, sondern erst nach zweieinhalb Minuten. Der Grund hierfür ist, dass mögliche Synchronisationsfehler der beiden Systemuhren berücksichtigt werden müssen und der Task genau in dem Moment ausgeführt wird, in dem die Systemuhr auf die angegebene Zeit wechselt - allerdings ist die Auflösung nur minutengenau. Also muss man den Anfang der gewünschten Minute "erwischen".. Das Skript veranlasst den angesprochenen Rechner, um die aktuelle lokale Systemzeit plus zweieinhalb Minuten das entsprechende Skript auszuführen. Würde man einen zu geringen zeitlichen "Sicherheitsabstand" wählen könnte es passieren, dass die Uhr des Zielrechners schon "weiter" ist und das Skript nicht wie gewünscht, sondern erst am nächsten Tag ausgeführt wird.

Was ist zu beachten? Zunächst einmal müssen natürlich die entsprechenden Zugriffsrechte bestehen. Der IPS-Rechner muss also auf den Zielrechner zugreifen dürfen. Ich habe aus diesem Grunde den IPS-Dienst unter einem entsprechenden Account ausgeführt. Dann muss man selbstredend Pfad- und IP-Adressen anpassen. Ich verwende die IP anstelle des Hostnamens weil letzteres bei mir zwischen WLAN und LAN aus unerfindlichen Gründen nicht funktioniert. Wichtig ist dann natürlich, dass man dem entsprechenden Rechner per DHCP eine feste IP zugeordnet hat.

Wenn man will kann man das Skript noch verfeinern indem man z.B. die Übergabe eines Parameters erlaubt und die Datei auf dem Zielrechner im Skript selbst erzeugt. So könnte man ein Skript erzeugen, das auf dem Remotesystem einen "beliebigen" als Parameter zu übergebenden Befehl ausführt. In meinem Fall reichte jedoch das hier gezeigte Beispiel aus.

Geändert von sokkederheld (24.11.08 um 12:51 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 24.11.08, 12:56
Senior Member
 
Registriert seit: Sep 2008
Beiträge: 147
Standard

Ach Mist, falsches Forum... sollte unter Tipps & Tricks stehen...

@Mods: Wenn es jemand verschieben könnte, wäre das toll! Danke.
Mit Zitat antworten
  #3 (permalink)  
Alt 24.11.08, 13:25
Benutzerbild von Tonic1024
Freak
 
Registriert seit: Sep 2005
Ort: Cuxhaven
Beiträge: 5,020
Standard

Und...
...Verschoben.



Naja... mein Favorit wäre da aber doch das draufkopieren der ToniTools. Dann kann man am Notebook noch einiges mehr von IPS steuern lassen.

Toni
__________________
www.Tonis-Welt.com
01001000 01100101 01101100 01101100 01101111
01110111 01101111 01110010 01101100 01100100
Mit Logik kommen wir hier nicht weiter...

_________________________________
Geändert von Tonic1024 (Morgen um 14:76 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 24.11.08, 15:03
Senior Member
 
Registriert seit: Sep 2008
Beiträge: 147
Standard

Zitat:
Zitat von Tonic1024 Beitrag anzeigen
Naja... mein Favorit wäre da aber doch das draufkopieren der ToniTools. Dann kann man am Notebook noch einiges mehr von IPS steuern lassen.
Ja, wenn man das möchte. Aber wenn man eben nur das Herunterfahren braucht, reicht ja vielleicht auch o.g. Skript. Es spart wie gesagt ein weiteres Programm das ständig im Hintergrund laufen muss.

Ehrlich gesagt fiele mir auch kaum ein, was ich noch alles per IPS auf meinem Notebook steuern wollte? Aber vielleicht fehlt mir im Moment nur ein bisschen Phantasie...
Mit Zitat antworten
  #5 (permalink)  
Alt 24.11.08, 17:47
Senior Member
 
Registriert seit: Jul 2007
Beiträge: 403
Standard

Hi,

Zitat:
Zitat von sokkederheld Beitrag anzeigen
...Es spart wie gesagt ein weiteres Programm das ständig im Hintergrund laufen muss.
habe ich da etwas falsch verstanden? IPS läuft doh auch auf Deinem Notebook oder? Dann könntest Du doch direkt von IPS den Rechner schlafen legen lassen (auch per WSH). Dann sparst Du Dir den Stress mit den Uhrzeiten.

Ich wünsche einen schönen Abend.

Christoph.
Mit Zitat antworten
  #6 (permalink)  
Alt 24.11.08, 18:55
Benutzerbild von Doctor Snuggles
Senior Member
 
Registriert seit: Sep 2005
Beiträge: 908
Standard

Zitat:
Zitat von Christoph Beitrag anzeigen
Hi,
habe ich da etwas falsch verstanden?
Das sieht so aus . Er wollte wohl alle laufenden Rechner beim Verlassen des Hauses runterfahren (Hibernate), nicht den IPS-Server.

@sokkederheld

Wenn du uns jetzt noch ein Script lieferst, mit dem man die Rechner bei Heinkehr wieder aus dem Hibernate zurück holt bist du der Held.

Grüße,
Doc
Mit Zitat antworten
  #7 (permalink)  
Alt 24.11.08, 20:05
Senior Member
 
Registriert seit: Sep 2008
Beiträge: 147
Standard

Zitat:
Zitat von Doctor Snuggles Beitrag anzeigen
Wenn du uns jetzt noch ein Script lieferst, mit dem man die Rechner bei Heinkehr wieder aus dem Hibernate zurück holt bist du der Held.
Das wird (per WLAN) schwierig. Obwohl... probier mal dieses hier:

Code:
hocus($pocus);
$fidibus = "abrakadabra";
IPS_Execute("zappzerapp");


Auf dem Notebook läuft IPS übrigens nicht, warum auch?

Geändert von sokkederheld (24.11.08 um 20:08 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 24.11.08, 23:12
Senior Member
 
Registriert seit: May 2008
Beiträge: 112
Standard

Zitat:
Zitat von Doctor Snuggles Beitrag anzeigen

Wenn du uns jetzt noch ein Script lieferst, mit dem man die Rechner bei Heinkehr wieder aus dem Hibernate zurück holt bist du der Held.
Wo ist das Problem mit WOL? Könnte unter Umständen sogar mit WLAN funktionieren (nicht getestet) ansonsten würd ich es einmal mit "Pattern Match" anstelle vom "Magic Packet" versuchen.
Mit Zitat antworten
  #9 (permalink)  
Alt 25.11.08, 13:24
Senior Member
 
Registriert seit: Sep 2008
Beiträge: 147
Standard

WOL über WLAN? Das hab ich noch nie gehört und kann mir auch nicht vorstellen, dass es funktioniert. Wenn die WLAN-Karte im ausgeschalteten Zustand ständig auf das Signal zum Einschalten hören müsste, wäre das auch eine ganz erhebliche Stromverschwendung für 99% der Benutzer, da wirklich nur die wenigsten WOL einsetzen. Ich habe es übrigens schon mit mehreren Rechnern probiert (kabelgebunden) und so richtig funktioniert hat es noch nie...

Schließe aber nicht aus, dass es irgendwo auch Rechner gibt, bei denen WOL funktioniert...
Mit Zitat antworten
  #10 (permalink)  
Alt 25.11.08, 13:31
Benutzerbild von Tonic1024
Freak
 
Registriert seit: Sep 2005
Ort: Cuxhaven
Beiträge: 5,020
Standard

Ähm... auch bei Wired-LAN muss die Netzwerkkarte mit strom versorgt werden damit das geht...


Toni
__________________
www.Tonis-Welt.com
01001000 01100101 01101100 01101100 01101111
01110111 01101111 01110010 01101100 01100100
Mit Logik kommen wir hier nicht weiter...

_________________________________
Geändert von Tonic1024 (Morgen um 14:76 Uhr)
Mit Zitat antworten
Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an



Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 Uhr.


Powered by vBulletin® Version 3.8.4 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0