Programmiersprache(n)/Infos für Weboberfläche

LastChosenOne

Lt. Junior Grade
Registriert
Mai 2014
Beiträge
353
Hallo Community :)
und zwar möchte ich mir interesse- und spaßeshalber eine kleine Weboberfläche zusammen basteln, um Beispielsweise einen Dienst auf meinem Linux-Server neu zu starten oder Configurationsdateien zu ändern.
Kenntnisse in den Sprachen C, C++, VB.NET, C#, HTML(5) und etwas CSS habe ich bereits.

Webmin selbst kenne ich bereits und weiß, dass es in Perl realisiert wurde.
Ich möchte aber gerne wissen, welche Sprachen man noch dafür verwenden kann.
HTML und CSS ist keine Frage, jedoch habe ich gelesen dass es auch mit Python funktionieren soll, Ruby (on Rails) sollte auch gehen, PHP ebenso, und keine Ahnung was alles noch.
Zählt einmal bitte ein paar auf, falls ihr noch welche kennt.

Und was sind die Vor- und Nachteile der jeweiligen Sprache(n)?
Ist z.B. Perl in manchen Punkten besser als PHP? Oder sollte man bei neuen Projekten direkt auf Python oder Ruby setzen? Welche Sprache eignet sich für was besser?

Und wozu ich auch keine Informationen gefunden habe:
Welche Sprachen werden für die Weboberfläche für die NAS von Synology und QNap verwendet? (Da ich die Idee von dem Desktop im Browser recht cool finde) :)

Schreibt bitte alles drunter, was ihr wisst - was ihr mir empfehlen könnt - usw. :)

Dankeschön und Gruß :)
 
Ich würde es wohl mit Python (um genau zu sein mit Flask) umsetzen. Ist sehr minimalistisch und trotzdem noch komfortabel genug zu entwickeln. Du baust dir eine kleine Schnittstelle und lieferst direkt die HTML-Oberfläche aus, von der aus per Javascript die Requests gegen diese Schnittstelle gefeuert werden.
 
Rails würde ich von abraten. Erreicht selten mehr als 1% der Geschwindigkeit anderer Frameworks.
Benchmark Web-Frameworks: https://www.techempower.com/benchmarks/#section=data-r10&hw=peak&test=fortune

Ansonsten ist REST gerade sehr beliebt. Ich glaube das meint Tumbleweed. Dein Webserver liefert statisches HTML aus und JSON-Daten über eine separate REST-Schnittstelle. Beides wird per Javascript, JQuery oder ein umfassendes GUI-Framework im Browser gerendert. Das entlastet Server und vereinfacht den Code ungemein (auch zur Laufzeit, Stichwort: 'zustandsloser Server').

Falls du eine neue Programmiersprache lernen möchtest, guck dir Go an. Mir gefällt der Ansatz, alles so einfach und reduziert wie möglich zu machen. Das betrifft u.a. die Sprache, die Klassenbibliothek, das Bauen: 'go build' baut ... , keine Parameter, kein Makefile. Das entstehende Binary enthält alle Abhängigkeiten, keine shared libs. Go muss nicht auf dem Zielrechner installiert sein.
 
Okey danke soweit :)

@Tumbleweed: Du bist der Meinung, ich sollte also Flask (Python?) verwenden - darf ich fragen, warum? Gibt es spezielle Gründe dafür? :)

@fhtagn: Eine neue Programmmiersprache werde ich dafür ja lernen müssen :)
Es ist ja eigentlich relativ egal, ob ich REST benutze oder nicht, oder? Für REST müsste ich mich hald auch noch in JavaScript/JQuery einarbeiten, darin eine GUI schreiben die dann über eine Schnittstelle (in ka - hab ich noch nicht ganz überrissen - PHP/Perl/Python/keine Ahnung) mit dem Server kommuniziert und dort dann den Befehl ausführt.
Wäre das nicht etwas overkill für meine Zwecke (Configs bearbeiten + Befehle in der Shell ausführen) ?


Sorry wenn ich irgend etwas unverständlich hin schreibe - ich arbeite mich derzeit nebenbei in das Thema erst ein. ^^
 
Du fragst, ob die GUI nicht overkill ist… aber das war doch deine Idee :p Natürlich kannst du stattdessen einfach per SSH remote commands ausführen, aber dann hast du ja nicht deine gewünschte (Web-)Oberfläche.

Warum flask? Naja, wie bereits erwähnt ist es sehr minimalistisch (wenig Code, viel Effekt), hat einen Server im Bauch (d.h. du brauchst keinen Apache, falls du noch keinen hast) und du hast mit Python eine schöne (rein subjektiv) und mächtige Sprache, deren Interpreter auf Linux sowieso vorhanden ist. Zugegeben, das Flask-Modul musst du nachinstallieren, aber das bereitet keine Schmerzen.
Statische Dateien (HTML/CSS/JS/…) ausliefern ist mit Flask auch kein Problem und sollte es tatsächlich nötig sein, hast du durch Jinja noch Template-Funktionen dabei.

Schau dir den verlinkten Quickstart Guide an. Leichter geht es doch wirklich nicht. :p
 
Ok danke dafür, und gute Begründung :)
Ich werd mir den Quickstart-Guide die nächsten Tage mal anschauen, wenn ich dazu komme ;)

Ja extra nochmal vollständig in JavaScript einarbeiten für eine kleine/einfache GUI (wie Beispielsweise bei Webmin) - hielt ich für etwas overkill, ja :D

So eine GUI zu erstellen wie bei den NAS von QNap/Synology ist sowieso eine Masteraufgabe alleine - aber ich finde es trotzdem echt cool. :)
Hier weiß niemand was dazu, oder? :( Würde mich hald auch sehr interessieren ^^

Gibts noch mehr? Weiß sonst noch jemand etwas? Hat irgendwer so was ähnliches schon gemacht?
Ich bin Info-Geil :D
 
Das ist einfacher als du glaubst.
Schau dir die PHP Funktionen zum ausführen von externen Programmen an. Wirst keine 20 Zeilen brauchen um deinen Launcher fertig zu bekommen.

Geht auch mit HTML5 !
Code:
<button onclick="window.open('file:///C:/bla.exe')">
    Starte Bla.exe
</button>

Bei komplizierten Sachen nimmst eine Scriptsprache wie Python oder Ruby, programmierst was sie tun sollen und startest das File aus der Web GUI. Die Hauptarbeit hast mit dem einrichten des Webservers, sowie der Absicherung. Nicht dass dir einer was manipuliert und beliebige Programme startet - da solltest direkt im Betriebssystem (hoffentlich Linux!), entsprechende Accounts mit passenden Rechten setzen.

Als Server Betreiber haftest für den Server, auch wenn er gehackt und missbraucht wird und jemand Schadensersatz will. Die Kosten kannst dann dem Täter zustecken, falls er gefunden wird.

Bau dir einfach mal eine HTML 5 Seite mit einem Button welcher irgendein Programm startet und teste es direkt. Wirst keine Stunde brauchen. Zum lokalen Testen bei PHP & Co. kannst sowas wie XAMPP nehmen.
Wenn das steht, baust die restliche GUI drum.
 
Zuletzt bearbeitet:
Ok danke :)
Ich werds dann mal versuchen wenn ich Zeit habe und schauen, ob ich es hin bekomme :)


So nebenbei:
Gibt es eigentlich sonst irgendwelche Gründe, warum ich z.B. Perl statt PHP benutzen sollte?
 
@black90
Dein Code startet die Anwendung auf dem Client und nicht auf dem Server.

@LastChosenOne
Wichtiger als die Programmiersprache, die hinter deiner Weboberfläche steckt, ist die Frage, wie Du die Architektur dahinter gestaltest. Reicht es Dir, einfach Befehle als root absetzen zu können? Oder brauchst Du doch eher eine Modul-Struktur, die auch sowas wie "Konfigurationsdatei lesen, in bestimmter Form anzeigen, zurückschreiben und Dienst neustarten" beherrscht.
Fürs Erste würde ich dir empfehlen, dich Server-seitig in die systemd-Kommandos einzuarbeiten (insbesondere systemctl und journalctl), dann hast Du ~70% der Anwendungsfälle erschlagen, denke ich.
 
Zurück
Oben