[in arbeit] Neues Paket: Halt On Lan (HOL)

astrapi

Mitglied
Mitglied seit
27 Mai 2005
Beiträge
341
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich würde gerne die Möglichkeit schaffen, PC's im LAN auszuschalten, Analog zu WOL. Das ganze soll per passwortfreiem SSH-Zugang erfolgen.

Dazu würde ich gern eure Meinung bezüglich WebIF wissen. Zwei Möglichkeiten sehn ich. Zum einen die Integration in die WOL Seiten, zum anderen komplett getrennte Einstellungen und eigenr Port (z.B. 83).

Was haltet ihr davon?
 
Zuletzt bearbeitet:
Gute Idee! Allerdings würde ich persönlich das vorhandene WebIF usw. vom WOL-Paket nutzen. Man kann da eine Option in Menuconfig einbauen "Mit HOL" und entsprechend in WOL-WebIF unter Port 82 dann den Schalter "Ausschalten" ein- oder ausblenden, je nach dem, ob man die Option "HOL" gewählt hat. Sonst wäre es zu viel Aufwand für dich.

Aber als Erstes würde ich hier einfach den HOL-Script publizieren. Als Binary, wenn es geht. Wenn es überhaupt ein Binary ist.

Kannst du auch in 2-3 Sätzen kurz erklären, wie dein HOL überhaupt funktioniert? Welche Betriebsysteme werden unterstützt? Unter Windows sehe ich z.B. nur einen Weg über Samba, wenn überhaupt, oder über irgendeinen speziellen Dienst.

MfG
 
Das ganze soll per passwortfreiem SSH-Zugang erfolgen
Somit im Normalfall nur für Linux einsetzbar. Ich will einfach per ssh nen den Befehl "shutdown -h now" an den entsprechenden Rechner senden.

Eine Eigene config wäre besser, da hier wiederrum eine Liste geführt werden muss, welche PS's ausschaltbar sind.

EDIT:

oder die einträge bei zugelassene host sehen so aus:
Code:
<hostname> <wol> <hol>
rechner1 1 1
 
Zuletzt bearbeitet:
Welche PC-s ausschaltbar sind hängt sowieso davon ab, wie man sie im LAN freigegeben hat, und ob dort "der Client" läuft. Von daher macht es wenig Sinn es nochmal separat zu filtern. Viel interessanter wäre die Funktion "aktive Rechner" anzeigen. Sowas ähnliches, wie für WLAN-Rechner unter AVM-WebIF. Leider zeigt AVM-WebIF LAN-Schnittstellen als "aktiv", selbst, wenn der Rechner "schläft". Man hätte so eine Funktion mit ping relativ leicht realisieren können. Also, wenn WOL-WebIF aufgerufen wird, dann wird eine Liste aktiver Rechner angezeigt (die sich anpingen lassen). Von mir aus gefiltert mit deinem Filter. Man könnte die Option auch ähnlich wie dein Filter abschaltbar machen.

Zu den Betriebsystemen. Man sollte versuchen es doch unter Windows auch lauffähig zu machen. Zudem so eine Möglichkeit auch unter Windows gibt und von mir Windows-Windows erfolgreich getestet wurde. Ich weiß allerdings nicht, wie es unter Windows handgehabt wird. Ich vermute da was SAMBA-basierendes.

Wenn es mit Windows-eigenen Mitteln nicht machbar wäre, könnte man entweder SSH-Server auf Windows installieren (es gab da mal vor Jahren eine freie Version) oder irgendein Dienst auf dem Windows-Rechner laufen lassen, der dann "shutdown"-befehl von Windows auslöst. Für diejenigen, die es vielleicht nicht wissen, auch unter Windows gibt es "shutdown" mit reichlich vielen Parametern.

Meine Google-Suche ergab, dass solche Lösungen (mit einem Dienst) bereits vorhanden und als Shareware verfügbar sind. Wenn man mehr nachforscht, findet man evtl. eine OpenSource-Lösung.

MfG
 
mit dem anpingen ist ne gute idee, die liste würde ich aber trotzdem führen, evtl. aber nicht mit ner 1 für hol, sondern eher mit der os version....

wer hat eigentlich das wol geschrieben?
 
Der Samba-Befehl net enthält eine Funktion zum herunterfahren von Windows-Rechnern über das Netzwerk. Da müsste man wahrscheinlich sinnvollerweise den entsprechenden Code raussuchen und in ein kleines Standalone-Tool packen - wobei der net-Befehl sehr umfangreich ist und wahrscheinlich stark mit dem samba-Libraries verwoben.
 
auch ne idee, die ich schon bei der anpassung des wol hatte, ist die exhosts zu erweitern, und darin festzulegen ob ein client aufweckbar / ausschaltbar sein soll. fragt sich nur, was das für dnsmasq oder andere für folgen hat.
 
so, erste version ist fertig, habe mich entschieden es ins wol paket einzubauen. habe dieses dann auch gleich mal umgebaut.

bitte fleißig testen!

Anhang anzeigen wol.diff.tar
 
Ich hatte mir deine diff angeschaut und habe einige Fragen:

1. Funktioniert es denn auch unter Windows? Was läuft denn dann auf dem Windows-Rechner?
2. Habe ich es richtig verstanden, dass du ohne Passwörter dich als Root auf den Rechnern anmeldest? Das finde ich etwas übertrieben und unsicher. Denn jeder, der irgendwie auf die Box kommt ist dann sofort per default ROOT von deinen Rechnern hinter der Box. Ich weiß, dass meistens nur ROOT shutdown ausführen darf. Es wäre aber sicherlich besser anstatt ROOT einen speziellen Benutzer anzulegen, der dann nur shutdown machen darf.


Noch besser wäre es irgendeinen Parser/Dienst oder was auch immer auf irgendeinem anderen Port lauschen zu lassen. Als Protokoll könnte man ssh oder sogar telnet nehmen (ist ehe intern im netz). Die Box schickt dann zu dem Rechner ein Befehl (von mir aus, nach dem linux-format mit "shutdown -blabla"). Der Parser auf dem Rechner hört darauf und wenn er da die richtige Kombination erkennt, sendet er dann "shutdown" lokal auf dem Rechner als commando. Alle anderen Befehle ignoriert er.

Das hätte den Vorteil, dass der Parser dann Windows/Linux-spezifisch sein sollte und Befehle, die von der Box versendet werden dann universell und einheitlich sind.

Hat da jemand Ideen, wie man sowas realisieren könnte?

MfG
 
1. Funktioniert es denn auch unter Windows? Was läuft denn dann auf dem Windows-Rechner?
  • Ja, geht auch mit Windows Rechnern (nt, xp und vista)
  • auf dem Rechner muss ein SSH-Server laufen
2. Habe ich es richtig verstanden, dass du ohne Passwörter dich als Root auf den Rechnern anmeldest?
JAIN, ja ohne Passwörter, aber mit dem im Wiki beschriebenen Verfahren, mit Schlüsseldateien

Noch besser wäre es irgendeinen Parser/Dienst oder was auch immer auf irgendeinem anderen Port lauschen zu lassen.
Auch ne idee, mal sehn was sich machen lässt.
 
Mit welchem Server denn? Ich hatte vor 3-5 Jahren irgendeinen SSH-Server auf meinem Windows gehabt. Die Entwicklung von diesem Server ist aber kommerziellen Weg gegangen, sodass ich irgendwann mal es sein gelassen hatte. Heute hatte ich diesen Server gefunden, der zumindest viel verspricht.

Wie gesagt, das Hauptproblem sehe ich darin, dass man nicht nur "shutdown" machen kann, sondern viel mehr auf dem Rechner böses anrichten kann. Entweder sollte man einen speziellen Benutzer anstatt root erstellen, der nur shutdown darf, oder es irgendwie anders lösen. Übrigens, ssh ist dann im Heimnetz nicht zwingend erforderlich, wenn der Benutzer nur shutdown darf.

Zu deinen Zertifikaten/Schlüsseln. Du verstehst meine Bedenken falsch. Du legst den Schlüssel von allen deinen Rechner auf die fritzbox frei. Jeder, der auf die fritzbox gelangt, kann dann root von allen deinen Rechner sein. Und das ist nicht gut. Die Methode, die du benutzen magst ist gut, wenn du diesen Schlüssel z.B. auf deinen USB-Stick packst und jedes Mal rausholst, wenn du es brauchst. Halt wie mit einem normalen Schlüssel. In deinem Fall sieht es so aus, als ob du deine Schlüssel von deinem Haus unter dem Teppich vor der Tür liegen hast.

MfG
 
ich versteh die bedenken, überleg grad ob und wie ich das anders lösen kann...zb macht callmonitor+callmon2 etwas interesantes, callmon2 lauscht auf port 7777 ob callmonitor was schickt...das würd ich gern als init-script auf die linuxrechner bringen, unter windows müsste ein dienst her ....
 
genau, mit den diensten unter windows ist so eine sache. Deswegen muss da ein fertiges Programm her. Es gibt unter Windows so ein tool, mit dem man jede beliebige exe-Datei zu einem Dienst deklarieren kann (sogar von m$, glaube ich). Das Problem an der Geschichte ist aber, dass solche "pseudodienste" nicht ewig leben und gestoppt werden, sobald sich ein benutzer abmeldet. Grund dafür ist, dass die normalen exe-Programme irgendein "user-modus-flag" haben. Dieser Flag bewirkt, dass die exe-Datei beim ambelden gekillt wird.

Also, ohne kenne in Windows-Programmierung hat man verloren. Das gute an dem SSH-Server (s. mein Link oben) ist, dass dafür Sourcen gibt. Man könnte also auf Basis von diesem SSH-Server (läuft richtig als Dienst, wohlgemerkt!) eine abgespeckte Version kreiren, die dann nur auf "shutdown" hört. Nur als Beispiel.

Zu Not kann man noch den Weg über SAMBA gehen. Das würde ich aber zunächst vermeiden.

MfG
 
und wie siehts unter linux aus? init-script ist klar...und wie überwacht man einen port? und wie sendet man von der fritzbox dann?
 
unter Linux ist es kein Problem. Man kann z.B. eine zweite Instanz von ssh-Server auf einem Port 2222 (als Beispiel) starten. Man könnte dann diese zweite Instanz durch config-Datei oder wie auch immer so starten, dass man mit diesem zweiten ssh-Server nur shutdown machen darf.

Bei Linux wird man schon was finden. Das Hauptproblem sehe ich eher in Windows.

Man sollte nochmal danach googeln. Es gibt bestimmt irgendein OpenSource-Tool, welches als Dienst unter Windows lauscht und danach irgendwas macht. Wie gesagt, so eine Art Halt-on-Lan gab es als Shareware irgendwo. Allerdings ist es keine Freeware und eher daran gezielt, dass man den teueren Server (software) kauft, der dann alle Rechner steuert. Aber vielleich kann man da was abgucken.

MfG
 
unter windows könnte man yac als vorbild nehmen, und wol ein paket mit rawmsg senden lassen, auf einem speziellen port, hätte den vorteil das man per callmonitor auch rechner ausschalten kann...

unter linux such ich grad eine entsprechende variante, das perl script von callmon2 scheint nicht geeignet zu sein ...
 
ich würde sowieso dir anraten für dein HOL-Paket nicht nur reine cgi-s zu machen, sondern wenigstens ein sh-script, welches du unter /usr/bin ablegst. Ich hatte es so bei meinem downloader gemacht. Mit diesem script realisierst du dann die Grundfunktion mit verschiedenen Aufrufparametern (wie gesagt, du kannst es beim downloader abgucken). Das hätte den Vorteil, dass du im callmonitor als action diesen sh-script direkt eintragen könntest ohne irgendeinen Umweg.

Ich würde gerne das ganze "univizieren", dass die Unterscheidung windows/linux erst beim Rechner statt findet, oder wenigstens dann in diesem sh-script drinnen. Von "außen" sollte wenigstens Aufruf von diesem Script gleich sein.

YAC-Client hat den Nachteil, dass es kein Dienst ist (Nachteile s. oben). Ergo: Wenn keiner angemeldet ist, kannst du den Rechner nicht runterfahren.

MfG
 
Ich habe ca vor nem Jahr schonmal sowas gemacht, da habe ich mit Delphi ein relativ hässliches Programm geschrieben mit einer Webserver-Komponente, der und habe, der bei Aufruf von der Fritzbox-IP mit einem mittels GET übergebenen Passwort-Parameter den shutdown eingeleitet.
Von der Fritzbox war das dann einfach mit nem wget auszulösen.
Aber ich glaube das Programm hab ich nicht mehr, ist von daher wohl eher als Denkanstoß zu sehen, und wohl auch ein ugly workaround ...

Zum Thema Windows und Dienst erstellen hab ich das gefunden:
http://www.windowspage.de/frame.php?http://www.windowspage.de/gemeinsame/sonstiges/srvany.html
 
eben genau über diesen srvany hatte ich oben gesprochen. Es geht nicht damit aus einem exe-Programm einen Dienst zu erstellen. Spätestens wenn der Benutzer sich abmeldet ist dein Dienst dann weg. Ist halt so, weil user-spezifische Programme unter Windows keine Dienste sein dürfen.

Ich hatte mir damit vor Paar Jahren schon viel Zeit vergoldet, als ich das WLAN-Knopf-Programm eines ALDI-Notebooks zum Dienst erklären wollte, was er nicht war.

MfG
 
das mit den ssh pub/priv keys geht schon das man das einschrenkt und dieser key nur einen shutdown machen kann, siehe:
http://kristiannielsen.livejournal.com/2982.html
http://www.openbsd.org/cgi-bin/man.cgi?query=sshd
aber heist natuerlich immer noch das sich ein "angreifer" mit dem key als anmelden kann und den definirten befehl (in dem fall den shutdown) ausfuhren darf, wenn er irgenwie an den key gekommen ist.

BTW Es wird einfach auch zeit das wir openssh als paket fuer freetz haben, ich konnte es leider bis jetzt nicht zusammen bauen, aus zeitgruenden.

gruss
bofh
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.