Entwickler-Ecke
Internet / Netzwerk - clients über netzwerk rebooten oder herunterfahren...
_Jonny_ - Di 05.06.07 18:33
Titel: clients über netzwerk rebooten oder herunterfahren...
hi erstmal, bin neu hier.
also zu meiner frage:
mich würde interessieren wie ich es schaffe über netzwerk die ip-adressen und Computernamen der rechner auszulesen die im netzwerk vorhanden sind. (es muss sich nicht auf servernetzwerke beziehen, LAN-netzwerke sollen auch funktionieren)
also ich habe vor über eine buttonclick-prozedur die ip-adressen und computernamen in ein geeignetes feld auszulesen und dann wählen zu können welche davon heruntergefahren werden sollen bzw einen reboot ausführen sollen.
(ich will nichts hacken oder sowas, es dient nur der tatsache das man in einem großen computerraum nicht von rechner zu rechner rennen muss um jeden einzelnen herunterzufahren) es soll dabei auch keine rolle spielen welches betriebsystem installiert ist (also gemeint ist >= WIN 98 )
könnte mir da jemand tipps bzw. kleinere unterrichtsstunden geben? ich will nicht unbedingt code verlangen, denn ich will auch verstehen was durchgeführt wird.
würde mich über antworten, tipps, ratschläge und hilfestellungen freuen.
(wenn codes geschrieben werden würde ich mich auch freuen wenn die einzelnen zeilen erläutert sind)
danke im voraus
LG _Jonny_ :D
Narses - Di 05.06.07 19:01
Titel: Re: clients über netzwerk rebooten oder herunterfahren...
Moin und :welcome: im Forum!
Vorweg: pro Thread nur eine Frage bitte, sonst gibt´s Chaos hier (ist abgesehen davon eh Forumsregel). :mahn: ;)
_Jonny_ hat folgendes geschrieben: |
| mich würde interessieren wie ich es schaffe über netzwerk die ip-adressen und Computernamen der rechner auszulesen die im netzwerk vorhanden sind. (es muss sich nicht auf servernetzwerke beziehen, LAN-netzwerke sollen auch funktionieren) |
Auf deine Frageformulierung hin: ping alle IP-Adressen im Subnetz an, wenn jemand antwortet, läuft da ein IP-Stack. Ob das ein (Windows-)PC ist... :nixweiss: das wirst du so schnell nicht rausfinden können. :|
_Jonny_ hat folgendes geschrieben: |
welche davon heruntergefahren werden sollen bzw einen reboot ausführen sollen.
[...]
es soll dabei auch keine rolle spielen welches betriebsystem installiert ist (also gemeint ist >= WIN 98 ) |
Ohne einen Prozess auf dem Zielsystem laufen zu haben, der deine Anforderung ausführt, wird das nicht gehen (jedenfalls nicht, wenn auch Win9x dabei sein soll). :?
cu
Narses
Reinhard Kern - Di 05.06.07 19:15
Titel: Re: clients über netzwerk rebooten oder herunterfahren...
_Jonny_ hat folgendes geschrieben: |
hi erstmal, bin neu hier.
also zu meiner frage:
mich würde interessieren wie ich es schaffe über netzwerk die ip-adressen und Computernamen der rechner auszulesen die im netzwerk vorhanden sind. (es muss sich nicht auf servernetzwerke beziehen, LAN-netzwerke sollen auch funktionieren)
also ich habe vor über eine buttonclick-prozedur die ip-adressen und computernamen in ein geeignetes feld auszulesen und dann wählen zu können welche davon heruntergefahren werden sollen bzw einen reboot ausführen sollen.
(ich will nichts hacken oder sowas, es dient nur der tatsache das man in einem großen computerraum nicht von rechner zu rechner rennen muss um jeden einzelnen herunterzufahren) es soll dabei auch keine rolle spielen welches betriebsystem installiert ist (also gemeint ist >= WIN 98 )...
LG _Jonny_ :D |
Hallo Jonny,
das sind zwar, wie beanstandet, zu viele Fragen, aber die Antwort ist nur die eine: um ein System fernzusteuern, muss auf diesem System ein Prozess laufen, der diese Anweisungen entgegennimmt und ausführt, z.B. VNC (Fernbedienung, gibts so ziemlich für alle Betriebssysteme, Näheres durch google).
Es reicht daher auch nachzuprüfen auf welchen Systemen im Netz VNC o.ä. aktiv ist - den anderen könnte man sowieso keine Befehle erteilen.
Wenn es nur ums Herunterfahren geht, könnte man sowas auch selbst schreiben, müsste das aber für alle beteiligten Systeme tun.
Gruss Reinhard
Timosch - Di 05.06.07 19:47
Wie wärs denn, wenn du auf allen Client-PCs ein Programm in den Autostart legst, dass sich beim Server meldet und die IP mitteilt? Wie oben gesagt, an nem Client kommst du nicht vorbei. Remote Shutdown über shutdown.exe geht AFAIK nur auf NT-Systemen.
_Jonny_ - Di 05.06.07 20:11
Titel: RE: RE: clients über netzwerk rebooten oder herunterfahren..
also danke erstmal für die antworten...ich werde mich auf jedenfall damit auseinandersetzen.
im eigentlichen geht es mir ja darum, das ich mit dieser function
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| function MyWindowsShutdown(AForce: Boolean): Boolean; var hToken: THandle; tp: TTokenPrivileges; h, Flag: DWord; begin flag:=EWX_SHUTDOWN; if (Win32Platform = VER_PLATFORM_WIN32_NT) then begin flag:=EWX_POWEROFF; OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken); LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tp.Privileges[0].Luid); tp.PrivilegeCount:=1; tp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED; h:=0; AdjustTokenPrivileges(hToken, False, tp, 0, PTokenPrivileges(nil)^, h); CloseHandle(hToken); end; if AForce then flag:=flag or EWX_FORCE; Result:=ExitWindowsEx(flag, 0); end; |
rechner herunterfahren kann, die im netzwerk sind und dessen ip ich ausgelesen hab. ich muss also noch die computer auslesen und die ip an diese function übergeben (wobei ich leider noch nicht weiß wie ich das machen soll)
ich weiß nur das diese function den shutdown erzwingt egal welches betriebssystem vorhanden ist (jedoch bin ich nicht sicher was WIN 9x angeht aber das kann bei diesen routinen ruhig außen vor gelassen werden)
ich werde mir auch das mit den fragen merken, für mich hat es nur einen engen bezug zueinander. trotzdem danke für den hinweis
Moderiert von
raziel: Quote- durch Delphi-Tags ersetzt
Narses - Di 05.06.07 21:15
Titel: Re: RE: RE: clients über netzwerk rebooten oder herunterfahren..
Moin!
_Jonny_ hat folgendes geschrieben: |
im eigentlichen geht es mir ja darum, das ich mit dieser function
[...]
rechner herunterfahren kann, die im netzwerk sind und dessen ip ich ausgelesen hab. |
Wer hat dir denn das erzählt? :?
_Jonny_ hat folgendes geschrieben: |
| die ip an diese function übergeben (wobei ich leider noch nicht weiß wie ich das machen soll) |
Das könnte daran liegen, dass es nicht geht. ;) Mit der Funktion oben kannst du nur das System herunterfahren/neustarten, auf dem du den Code ausführst! :mahn:
_Jonny_ hat folgendes geschrieben: |
| WIN 9x angeht aber das kann bei diesen routinen ruhig außen vor gelassen werden) |
Dann gib mal shutdown -? in einer Kommandozeile ein, das dürfte für dich sicher die einfachere Alternative sein. :idea:
cu
Narses
Ralf Jansen - Di 05.06.07 21:20
Diese Funktion fährt den Rechner runter auf dem diese Prozedur ausgeführt wird. Da ist nix zu machem um einen remote Rechner runterzufahren. Eigentlich gehts ja nur um den Aufruf der ExitWindowsEx API die dein System runterfährt. Der Rest ist nur dazu da dem Process der die Funktion ausführt die passenden Rechte zu geben.
Das geht aber natürlich auch nur wenn der User der den Prozeß ausführt selbst das Recht hat Rechte zu ändern.
Was du dir eigentlich ansehen solltest ist die InitiateSystemShutdown API mit der kannst du Remote Rechner runterfahren(passende Rechte auf den entsprechenden Rechnern vorausgesetzt).
Oder ganz einfach (wenn du XP installiert hast) einfach mal eine Kommandozeile öffnen und "shutdown -i" eingeben.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!