Hallo, momentan stehe ich vor einem kleinen Problem. Meine Aufgabe ist es einen Raspberry PI per Telnet und Webinterface (Webserver) steuern zu können. Das heißt auf dem Raspberry müssen ein Telnet und ein Webserver laufen. Der Raspberry bekommt dann Befehle wie SetIP oder etwas in der Art z.B. über Telnet und sendet dann einen festgelegten Befehl über den I2C Bus. Bisher hatte ich vor einen Telnet Server in C für den Raspberry zu schreiben. Dies funktioniert soweit ganz gut. Ich kann die Befehle die gesendet werden auswerten und könnte somit bei entsprechender Eingabe etwas über I2C an das angeschlossene Gerät senden. Das Problem liegt jetzt darin, wie ich das ganze dann mit dem Webinterface verknüpfe. Mein erster Gedanke war über den Webserver eine Textdatei mit den einzustellenden Variablen zu beschreiben. Z.B. IP = 192.168.0.2 . Dieses Textdokument wird dann von meinem C Programm ausgelesen und in den entsprechenden Befehl umgewandelt. (Kann ich 2 C Programme gleichzeitig auf dem Raspberry laufen lassen? Ich nehme an ja?) Diese Art der Lösung erscheint mir aber relativ umständig. Eine andere Idee war, dass der Webserver bei auswählen des Befehles über ads Webinterface, diesen dann per Telnet auf den eigenen Telnet Server des Raspberry schickt (also quasi telnet 127.0.0.1 mit dem Befehl?). Somit könnte ich es ja bei der einen Telnet Schnittstelle belassen und alles über diese erledigen. Macht diese Option Sinn und haltet ihr das für Realisierbar? Da ich erst vor einer Woche angefangen habe mich mit dem Raspberry zu beschäftigen sehe ich noch nicht welche Lösung sich eher anbietet. Könntet ihr mir auch gleich einen entsprechenden Webserver der diese Ideen unterstüzt empfehlen? Vielen Dank!
wenn du eh schon ein Telnnet "Server" geschrieben hast, warum programmierst du dann nicht noch HTTP mit rein.
Auf dem RPi läuft doch ein Linux. Der lighttpd müsste schon dabei sein (ggf. installieren), der kann auch CGI-Skripte ausführen. Diese müssten sich auch als (compilierte) C-Programme ausführen lassen, die dann den HTML-Code zurückliefern. Einfach mal die lighttpd-Doku lesen. Max
Leider bin ich bisher noch nicht sonderlich versiert auf dem Gebiet. Ich hab mir mit verschiedenen Anleitungen einen Telnet "Server" :) zurecht gebastelt. Dieser funktioniert vermutlich nur für eine einzige gleichzeitige Verbindung, was jedoch ausreichend ist.
Autor schrieb: > Der Raspberry bekommt dann Befehle wie SetIP oder etwas in der Art z.B. > über Telnet und sendet dann einen festgelegten Befehl über den I2C Bus. Wenn Du statt telnet ssh verwendest (das ist ganz plump vereinfacht dasselbe, bloß mit Verschlüsselung), dann ist das alles schon fertig. Reines telnet wird aus Sicherheitsgründen kaum noch verwendet. Die üblichen Linux-Distributionen für den Pi enthalten aber sowohl einen Webserver als auch ssh-Unterstützung; Du musst nur noch Deine I2C-Kommandos implementieren und ein paar CGI-Skripte für den Webserver basteln, der etwas sinnvolles mit den Resultaten der I2C-Kommandos anstellt. Allerdings: Warum dann überhaupt noch telnet/ssh? Die I2C-Dinge kannst Du auch vom Webserver über das CGI-Interface anstoßen lassen.
CGI scheint schonmal ein sehr guter Anhaltspunkt zu sein, danke! D.h. einerseits könnte ich quasi Event basiert das C-Skript per Webinterface ausführen lassen und im Hintergrund läuft der Telnet Server der ggf. dann Befehle über Telnet entgegen nimmt?
Rufus Τ. Firefly schrieb: > Autor schrieb: >> Der Raspberry bekommt dann Befehle wie SetIP oder etwas in der Art z.B. >> über Telnet und sendet dann einen festgelegten Befehl über den I2C Bus. > > Wenn Du statt telnet ssh verwendest (das ist ganz plump vereinfacht > dasselbe, bloß mit Verschlüsselung), dann ist das alles schon fertig. > > Reines telnet wird aus Sicherheitsgründen kaum noch verwendet. > > Die üblichen Linux-Distributionen für den Pi enthalten aber sowohl einen > Webserver als auch ssh-Unterstützung; Du musst nur noch Deine > I2C-Kommandos implementieren und ein paar CGI-Skripte für den Webserver > basteln, der etwas sinnvolles mit den Resultaten der I2C-Kommandos > anstellt. > > Allerdings: Warum dann überhaupt noch telnet/ssh? Die I2C-Dinge kannst > Du auch vom Webserver über das CGI-Interface anstoßen lassen. > Den Gedanken hatte ich auch schon, jedoch wusste ich nicht wie ich die empfangenen Befehle der SSH Schnittstelle entsprechend auswerte. Das ist ja durch die Verschlüsselung doch noch einmal komplizierter wenn ich das selbst programmiere. Telnet muss ich als Verbindung wohl hinnehmen da die Befehle von einem anderen Skript am entfernten PC kommen - sonst müsste ich diese noch alle anpassen. Zusätzlich soll das ganze eben auch noch unabhängig von Telnet über das Webinterface "manuell" steuerbar sein.
Autor schrieb: > Den Gedanken hatte ich auch schon, jedoch wusste ich nicht wie ich die > empfangenen Befehle der SSH Schnittstelle entsprechend auswerte. Das ist > ja durch die Verschlüsselung doch noch einmal komplizierter wenn ich das > selbst programmiere. Da musst Du exakt gar nicht selber programmieren oder auswerten - per ssh gibt es eine shell-Sitzung, und in der kannst Du genau dasselbe tun, was Du auch in einer lokalen Shell auf der Konsole anstellen kannst, d.h. beliebige Programme aufrufen etc. Nur: Wozu überhaupt einen zweiten Steuerungsweg? Irgendwelche Aktionen kann man auch über den Webserver ausführen lassen, dafür braucht es kein telnet und auch kein ssh. > Telnet muss ich als Verbindung wohl hinnehmen da die Befehle von einem > anderen Skript am entfernten PC kommen - sonst müsste ich diese noch > alle anpassen. Das empfiehlt sich; es dürfte einfacher sein, dem PC ssh beizubringen, und die bereits komplett fertige ssh-Unterstützung des Pi zu nutzen, als das Rad neuzuerfinden. Klar, Du könntest auch telnet auf dem Pi aktivieren, das geht natürlich auch.
Ich installiere gerade lighttpd und werde dann vermutlich mit den CGI Skripten arbeiten. Wenn das dann alles funktioniert werde ich mich wohl wieder mit Telnet bzw. SSH auseinander setzen :). Danke für die Hilfe, bei unlösbaren Problemen melde ich mich wieder :)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.