Java Prog: Netzschalter 2.0

  • Ein programm, dass befehle von der standardeingabe entgegennimmt und sie ausführt / ein programm startet.

    Zitat von gandro

    Zu cmd.exe vs. DOS: Die cmd.exe hat mit DOS eigentlich nichts zu tun. Die Wikipedia erzählt da Mist.


    Dann verbesser es doch :P

    [size=4]
    [/size]

    Einmal editiert, zuletzt von YAL (19. Februar 2009 um 22:10)

  • Beitrag von YAL (19. Februar 2009 um 22:10)

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Zitat von husan


    Mich würde jetzt mal interessieren, was den die cmd.exe genau ist. Ich möchte nicht damit sagen, das deine Aussage falsch ist...nur so aus reiner Interesse.


    Vielleicht hab ich mich etwas weit aus dem Fenster gelehnt, aber soweit ich das sehe, findet die DOS-Emulation nicht in der cmd.exe statt.

    Meine Theorie (wie gesagt, ohne Garantie):

    Nur schon um z.B. ANSI-C und dessen stdio zu unterstützen, braucht Windows eine Terminal-Emulation. Diese hat an sich keinen Namen, sondern ist eben dieses schwarze Fenster in dem die cmd.exe läuft. Diese Terminal-Emulation emuliert eben ein Terminal, ist also nichts weiter als eine Textausgabe.

    Die DOS-Emulation von Windows baut auf dieser Textausgabe auf, gibt also die Ausgabe von DOS-Anwendungen dort aus. So z.B. die bei Windows mitgelieferte COMMAND.COM (die offenbar aus MS-DOS 5.0 stammt).

    Die cmd.exe hingegen ist nichts weiter als ein Kommandozeilen-Interpreter, der ebenfalls in dieser Terminal-Emulation läuft.

    Verwirrenderweise ist der Befehlssatz der cmd.exe stark an die COMMAND.COM angelehnt. Schlimmer noch, praktisch immer wenn man eine Terminal-Emulation braucht (sei es für DOS-Anwendungen oder für Anwendungen die stdout verwenden), startet man dafür in der Regel die cmd.exe.

    Drum werden cmd.exe und die Terminal-Emulation oftmals als das gleiche angesehen, was sie aber imho nicht sind.

  • Zitat von gandro

    Drum werden cmd.exe und die Terminal-Emulation oftmals als das gleiche angesehen, was sie aber imho nicht sind.


    Ja, eben. Wie oft habe ich zum Beispiel gehört, dass LAME angeblich ein DOS-Programm sei, nur weil entsprechende Benutzer immer noch die Verknüpfung „Schwarzes Fenster mit Text drin“→„DOS-Programm“ besitzen. Noch mehr verwirrt sind solche Benutzer dann, wenn sie ein solches 32-Bit-Windows-Konsolenprogramm unter Windows 9x (oder auch NT4) starten und dieses Fenster mit einem MS-DOS-Symbol versehen wird.

    Also noch mal zum Mitschreiben: command.com ist der Kommandozeileninterpreter von MS-DOS, cmd.exe der von Windows NT (von 3.1 bis hin zu Vista). Beide sehen sich extrem ähnlich (DOS-Prompt, ähnliche Befehle), die cmd.exe ist aber mit zusätzlichen (und oftmals nicht uninteressanten) Funktionen ausgestattet, die im Microsoft-Jargon „Befehlserweiterungen“ (eben Parameter, die es so nicht bei den internen Befehlen der command.com oder als externes Programm in MS-DOS gegeben hat) genannt werden. command.com muss unter NT auf der DOS-Emulationsschicht (ntvdm.*) laufen, cmd.exe ist einfach ein Konsolen-Programm zur Benutzung als CLI neben vielen anderen möglichen (zum Beispiel eben die PowerShell oder Take Command von JP Soft).

    Zum Thema DOS-Version: Sämtliche mir bekannte NT-DOS-Emulationen emulieren ein MS-DOS 5, wobei die genaue Versionsnummer oft als 5.50 erkannt wird und darum zur NT-Erkennung bei DOS-Programmen (neben der charakteristischen Maustreiber-Signatur u.a.) genutzt werden kann.



  • Habe das Tool mal aktualisiert. Erstens hat es jetzt ne andere Grafik. Das ist der Knopf von den Rechner bei mir, für den das Tool ist. Dann sind die Offline/online Dinger jetzt in hübscheren Farben.

    Ok gibt wichtigere Sachen. Zum einen verwende ich jetzt den Ping befehl von Windows. Das heißt es muss nicht mehr Port 7 freigegeben werden. Zumindest bei der normalen Windows Firewall nicht.

    Zum anderen könnt ihr das Programm jetzt auch mit parametern starten:

    Code
    javaw -jar netzschalter.jar rechnername 00:30:05:11:3B:77



    das hab ich auch noch mal als bat datei dem archiv beigepackt, ich empfehle aber ne windows verknüpfung zu machen, weil dann gibts kein schwarzes fenster. wenn ihr parameter übergebt, braucht ihr keine ini datei mehr.

  • So haben die bei Siemens den knopf designt. der kreis in der mitte ist der führungsstab des knopfes.

    wenn du es für linux nimmst, solltest du vielleicht die alte version nehmen, die hatte ja den isreachable() drin, womit, falls deine firewall nicht geblockt hat, du immerhin sehen könntest, wann der rechner hochgefahren ist.

    aber wie gesagt code liegt im jar. dürfte für dich ein leichtes sein nen eigenen ping reinzupacken. vielleicht auch das runterfahren... aber da bin ich wirklich nicht fit genug in linux.

  • Sorry für den Doppelpost, aber anderer Inhalt. Hab mir kurz ein Linux-Shellscript gebastelt, was den Rechner beim Erreichen eines WOL-Paketes herunterfährt. Funktioniert mit Dirks Programm, nur meint der halt immer, der Rechner sei aus, was ich mangels Quellcode auch nicht ändern kann.

    Benötigt bash, Linux 2.6 und ngrep. Hört standardmässig auf eth0 und führt /sbin/poweroff aus, wenn das entsprechende Magic-Paket empfangen wird.
    Ansonsten kann man die Netzwerkkarte mit dem ersten Parameter, den Befehl mit dem zweiten Parameter angeben.

  • Zitat von Griggi

    Vielleicht weil er sich einfach viel besser mit Linux auskennt?!


    Naja, ist halt grösstenteils Erfahrung.

    Erstmal gegoogelt obs sowas schon gibt, aber nichts gefunden. Dann gegoogelt, wie man mit Linux am besten das Magic-Paket (also das Signal das Dirks Tool ausschickt) abfängt und ein Beispiel ngrep gefunden. Ein Tool womit man Netzwerk-Traffic durchsuchen kann. Kurz noch in der Wikipedia geschaut, wie das Magic-Paket aussieht und etwas rumspielen.

    Der Rest besteht dann nur noch aus dem Lesen der ngrep Manpage und ein paar Bash-Skillz :D

  • ist jetzt in der zip drin. dachte hätte den haken bei eclipse gesetzt. mein vorschlag wäre in zeile 74 return false dadurch zu ersetzen:

    Code
    return InetAddress.getByName(rechnername).isReachable(2000);



    obwohl du dann wahrscheinlich auch noch die action vom knopf ändern musst. der unterscheidet auch per ping welche funktion gestartet wird. bei Online Rechnern wird kein WOL Signal gesendet.

  • So ich habe das Programm wiedermal erweitert. Ausgehend von der Idee von Gandro ist jetzt auch ein Client Server betrieb möglich. Sprich es gibt ein zweites Programm, das auf den Steuerrechner kommt.

    Das ermöglicht dann auch den vollen Betrieb von Netzschalter zwischen Rechnern die nicht XP/Vista haben.

    Der Server benötigt Java 6, Port 7 und 28381 TCP.

    Der Client braucht nur noch Java 5

    getestet habe ich es zwischen Vista und XP, sowie Win 98 und XP.

    Wie bei Gandros ansatz bekommt der Server Pakete auf nen Port, enthält es "shutdown" fährt er runter. Wenn nicht, liefert er den freien Plattenplatz zurück.

    Die Server.ini hat dazu mindestens 2 Zeilen. Die erste enthält nen Befehl den lokalen Computer herunterzufahren. Alle anderen die Laufwerke die überwacht werden.

  • Wow nice!

    Wie ich sehe, jetzt komplett plattformunhängig. Also im Sinne von Fallbacks für "nicht-Windowse" :D

    Der Client funktioniert zusammen mit meinem kleinen Script perfekt. Den Java-Server muss ich noch testen, scheint quellcodetechnisch aber Linux-kompatibel.

    Nachtrag: Joa, der Server läuft auch. Allerdings braucht der ne GUI, find ich dämlich. Bin allerdings zu faul da nen kompatibles Serverscript zu schreiben, auch wenn mit netcat nicht all zu schwer.

  • die gui habe ich gemacht damit man den einfacher abdrehen kann, bzw bei windows kein command fester stehen bleibt. diesmal sind die java dateien auch wirklich im jar drin.

    plattformunabhängig sollte es aber sein, solange java 5 verfügbar ist. hab das ganze angefangen, weil meine Win 9x Rechner nicht mehr auf meinen vista rechner können. meine treiberdatenbank liegt da aber drauf. also nen rechner zur nas gemacht. faul geworden und jetzt was gesucht damit auch die win 9xer den steuern können.

  • So mal so richtig Archivthread pushen. Ich habe das Programm geupdated. Falls jemand noch daran interesse hat. Zum einen kosmetisch, Der Netzschalter ist wieder ein Fenster, position speicherbar, Das Programmicon zeigt auch den Status. Der Server hat kein Fenster mehr, ist nur noch ein Systrayprogramm, welche mit Rechtsklick nur ein feature kennt: beenden.

    Technisch habe ich was geändert, weil serverwechsel. normalerweise wird von 99 % der tools ein magic paket per broardcast versendet, also an die ip 255.255.255.255. Die tolle onboardkarte vom neuen serverboard reagiert aber nicht darauf, sondern nur auf ein broadcast im eigenen subnetz, in meinen fall 192.168.2.255, das programm ist jetzt modifiziert das es einmal nen magic paket im broadcast und in eigene subnetz schickt, wobei sinniger weise die ip des ausführenden rechners genommen wird und nur das letzte segment gegen 255 getauscht wird.

    Sourcen sind wieder im paket. alles im downloadbereich.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!