Forum: Mikrocontroller und Digitale Elektronik Raspberry PI Telnet / Webserver


von Autor (Gast)


Lesenswert?

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!

von Peter II (Gast)


Lesenswert?

wenn du eh schon ein Telnnet "Server" geschrieben hast, warum 
programmierst du dann nicht noch HTTP mit rein.

von Max G. (l0wside) Benutzerseite


Lesenswert?

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

von Autor (Gast)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Linuxxer (Gast)


Lesenswert?

da läuft doch ein Linux und damit OpenSSH ....

von Autor (Gast)


Lesenswert?

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?

von Autor (Gast)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Autor (Gast)


Lesenswert?

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 :)

von Chris (Gast)


Lesenswert?

Hier eine Schnellanleitung:
http://dcoj.wmh3.com/geekstuff/pisu/1.html

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
Noch kein Account? Hier anmelden.