Wie mache ich so etwas, welche Methode empfiehlt sich?
Wie mache ich so etwas, welche Methode empfiehlt sich?
Mein Ziel ist es, eine Oberfläche (am besten gtk) zu haben, in der ich bestimmte Daten von iwconfig, ifconfig, etc... auslesen kann und diese übersichtlich in der Oberfläche dargestellt werden. Bestimmte Felder soll man auch ändern können, beispielsweise ein Feld für die IP-Adresse, Gateway, DNS etc, was dann auch im Hintergrund an ifconfig bzw route und in die resolv.conf gschickt wird. Vorstellbar ist auch ein Auswahlfeld, in der man die Bitrate der WLAN-Karte setzen kann, sowie Felder für WEP-Key usw.
Die Daten im Terminal per Hand zu lesen bzw. zu setzen ist kein Problem, aber es ist halt nervige Tipperei (selbst mit eigenen Scripts), die man sich mit so einer Oberfläche sparen könnte. Der NetworkManager und ähnliche Tools sind nicht ganz das was ich suche, da es nicht um die Verbindungsherstellung geht, sondern ich für unsere Testzwecke einfach eine "Management-GUI" brauche, die per Knopfdruck bestimmte Betriebsmodi der WLAN Karte setzt und konstant bestimmte Daten (teilweise permanent) ausliest, wie z.B. die Verbindungsqualität.
Es gibt ja mit Sicherheit die Möglichkeit ein "echtes" Programm zu schreiben in C, was über die entsprechenden libs direkt auf die Hardware bzw. den Treiber zugreift, aber geht das nicht auch einfacher? Ich denke in etwa daran, dass die Oberfläche im Hintergrund einfach unsichtbar beispielsweise den Befehl "iwconfig wlan1" ausführt, an der entsprechenden Stelle den Wert für "Link Qualitiy" und "Signal Level" ausliest, in eine Variable packt, und diese Werte dann in der Oberfläche weiterverwenden und anzeigen kann. Gleiches dann halt auch in Gegenrichtung GUI --> Befehl
Wie bzw. womit kann ich so etwas am einfachsten umsetzen? Ich brauche also keine fertige Lösung für meine Aufgabe, ich suche eher nach den bestmöglichen Methoden, in die ich mich dann selbst einlesen kann. Danke für eure Tipps!
Die Daten im Terminal per Hand zu lesen bzw. zu setzen ist kein Problem, aber es ist halt nervige Tipperei (selbst mit eigenen Scripts), die man sich mit so einer Oberfläche sparen könnte. Der NetworkManager und ähnliche Tools sind nicht ganz das was ich suche, da es nicht um die Verbindungsherstellung geht, sondern ich für unsere Testzwecke einfach eine "Management-GUI" brauche, die per Knopfdruck bestimmte Betriebsmodi der WLAN Karte setzt und konstant bestimmte Daten (teilweise permanent) ausliest, wie z.B. die Verbindungsqualität.
Es gibt ja mit Sicherheit die Möglichkeit ein "echtes" Programm zu schreiben in C, was über die entsprechenden libs direkt auf die Hardware bzw. den Treiber zugreift, aber geht das nicht auch einfacher? Ich denke in etwa daran, dass die Oberfläche im Hintergrund einfach unsichtbar beispielsweise den Befehl "iwconfig wlan1" ausführt, an der entsprechenden Stelle den Wert für "Link Qualitiy" und "Signal Level" ausliest, in eine Variable packt, und diese Werte dann in der Oberfläche weiterverwenden und anzeigen kann. Gleiches dann halt auch in Gegenrichtung GUI --> Befehl
Wie bzw. womit kann ich so etwas am einfachsten umsetzen? Ich brauche also keine fertige Lösung für meine Aufgabe, ich suche eher nach den bestmöglichen Methoden, in die ich mich dann selbst einlesen kann. Danke für eure Tipps!
Re: Wie mache ich so etwas, welche Methode empfiehlt sich?
Hört sich interessant an.
Aber welche Programmiersprachen kannst du denn? Vorallem welche mit gui?
Meine Kenntnisse würden denke ich noch nicht ausreichen, um alleine eine gui zu programmieren.
Aber welche Programmiersprachen kannst du denn? Vorallem welche mit gui?
Meine Kenntnisse würden denke ich noch nicht ausreichen, um alleine eine gui zu programmieren.
Oh, yeah!
Re: Wie mache ich so etwas, welche Methode empfiehlt sich?
Ich denke da bieten sich die TK-Varianten von Perl und Python an.
Re: Wie mache ich so etwas, welche Methode empfiehlt sich?
hi,
direkt die Hardware anzusprechen oder auch nur die libs zu benutzen, lohnt sich in deinem Fall wohl kaum. Ich würde aber trotzdem ein "echtes Programm" schreiben, das mit der system()-Funktion iwconfig usw. aufruft. Manche Infos kann man auch ganz gut aus /proc auslesen.
Für die Benutzeroberfläche mit GTK würde ich glade mit libglade empfehlen. Damit spart man im Programm viel Schreibarbeit, es reduziert sich praktisch auf eine Funktion pro Eingabefeld/Button, die den passenden Befehl ausführt. Außerdem funktioniert GTK/glade mit allen wichtigen Sprachen, du kannst also deine Lieblingssprache verwenden.
das Minimal-Programm in C
GTK-Tutorial -- das braucht man dank glade3 fast nicht
GTK Reference Manual
direkt die Hardware anzusprechen oder auch nur die libs zu benutzen, lohnt sich in deinem Fall wohl kaum. Ich würde aber trotzdem ein "echtes Programm" schreiben, das mit der system()-Funktion iwconfig usw. aufruft. Manche Infos kann man auch ganz gut aus /proc auslesen.
Für die Benutzeroberfläche mit GTK würde ich glade mit libglade empfehlen. Damit spart man im Programm viel Schreibarbeit, es reduziert sich praktisch auf eine Funktion pro Eingabefeld/Button, die den passenden Befehl ausführt. Außerdem funktioniert GTK/glade mit allen wichtigen Sprachen, du kannst also deine Lieblingssprache verwenden.
das Minimal-Programm in C
GTK-Tutorial -- das braucht man dank glade3 fast nicht
GTK Reference Manual
Beware of programmers who carry screwdrivers.
Re: Wie mache ich so etwas, welche Methode empfiehlt sich?
Glade erzeugt doch so aufgeblasenen Code! Und die eigentliche Arbeit (Intelligenz einbauen) muss man trotzdem selbst machen. Die paar ->pack()-Aufrufe (perl-Tk) kriegt man doch so hin. Und man versteht auch gleich, was man da eigentlich fabriziert.
Ich halte von solchen Tools etwa genauso viel wie vom Erstellen von HTML-Code mit entsprechenden GUI-Tools.
Ich halte von solchen Tools etwa genauso viel wie vom Erstellen von HTML-Code mit entsprechenden GUI-Tools.
Re: Wie mache ich so etwas, welche Methode empfiehlt sich?
irgendwo hast du Recht, es ist sogar noch viel schlimmer, glade-3 erzeugt keinen Code mehr, sondern ein XML-File, das dann zur Laufzeit von libglade interpretiert wird! Wenn's aber nur um Buttons für iwconfig geht, und noch dazu um die ersten Schritte mit GTK, sollte man nicht so streng sein, mein' ich.
GTK war nicht meine Idee, das hat sich RaginRob gewünscht
GTK war nicht meine Idee, das hat sich RaginRob gewünscht
Beware of programmers who carry screwdrivers.
Re: Wie mache ich so etwas, welche Methode empfiehlt sich?
Gerade weil es nicht viel ist und es nur um ein paar Buttons geht finde ich, sollte man sich lieber ein Perl/Tk-Buch aus der Bibliothek holen und den Code selbst schreiben.cosmac hat geschrieben:Wenn's aber nur um Buttons für iwconfig geht, und noch dazu um die ersten Schritte mit GTK, sollte man nicht so streng sein, mein' ich.
Wie soll das sonst bei größeren Sachen werden?
Ich habe mal ein Perl/Tk-Script für ein Panel mit ein paar Buttons für Shutdown, Reboot usw. schreiben wollen. Die Oberfläche war mit Glade schnell fertig, aber als ich einen Tag später von Tk genug verstand um das GUI auch mit Code zu füllen, sah ich wie fürchterlich das Ganze in Glade (damals noch 2) aussah.
Da fiel es mir dann einfacher, das ganze Script von Grund auf neu zu schreiben, statt an den richtigen Stellen im Glade2-Code Hand anzulegen.
Re: Wie mache ich so etwas, welche Methode empfiehlt sich?
Erstmal danke für die vielen Antworten, das Forum hier ist wirklich super!
Ich bin in der Zwischenzeit auch ein bisschen weitergekommen und ich glaube, ich werde es mit Python versuchen. Dort gibt es außerdem auch schon ein "wifi-egg", dass sich um die WLAN-Geschichten kümmert Eine grafische Oberfläche ist damit wohl auch kein Problem. Wenn ihr weiterhin Vorschläge habt - immer her damit!
@duff: Ich habe in den letzten 15 Jahren bisher größtenteils kleinere Anwendungen und Datenbankfrontends programmiert, allerdings unter Windows mit VisualStudio in C++/C# oder VisualBasic, je nachdem. Zu 386er-Zeiten hab ich mich mit Pascal und Assembler beschäftigt, bei letzterem aber irgendwann den Faden verloren. Langfristig will ich mich auch wieder mit C++ beschäftigen, es scheint ja durchaus sehr fähige IDEs für Linux zu geben.
@hikaru: Gute Idee, in die Richtung tendiere ich auch.
@cosmac: Prima Tipp! Da hab ich garnicht mehr dran gedacht (/proc)! Da müsste man ja schon mal einiges finden und auch einstellen können. Glade werde ich mir auf jeden Fall auch mal angucken. Ich bin ja zugegebenermaßen ein wenig verwöhnt wegen VisualStudio, aber ich bin mal gespannt wie komfortabel man es sich unter Linux machen kann (Stichwort Code Completion etc...).
Grüße, Rob
Ich bin in der Zwischenzeit auch ein bisschen weitergekommen und ich glaube, ich werde es mit Python versuchen. Dort gibt es außerdem auch schon ein "wifi-egg", dass sich um die WLAN-Geschichten kümmert Eine grafische Oberfläche ist damit wohl auch kein Problem. Wenn ihr weiterhin Vorschläge habt - immer her damit!
@duff: Ich habe in den letzten 15 Jahren bisher größtenteils kleinere Anwendungen und Datenbankfrontends programmiert, allerdings unter Windows mit VisualStudio in C++/C# oder VisualBasic, je nachdem. Zu 386er-Zeiten hab ich mich mit Pascal und Assembler beschäftigt, bei letzterem aber irgendwann den Faden verloren. Langfristig will ich mich auch wieder mit C++ beschäftigen, es scheint ja durchaus sehr fähige IDEs für Linux zu geben.
@hikaru: Gute Idee, in die Richtung tendiere ich auch.
@cosmac: Prima Tipp! Da hab ich garnicht mehr dran gedacht (/proc)! Da müsste man ja schon mal einiges finden und auch einstellen können. Glade werde ich mir auf jeden Fall auch mal angucken. Ich bin ja zugegebenermaßen ein wenig verwöhnt wegen VisualStudio, aber ich bin mal gespannt wie komfortabel man es sich unter Linux machen kann (Stichwort Code Completion etc...).
Grüße, Rob
- foxxxone
- Beiträge: 5
- Registriert: 12.03.2009 22:16:52
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Chemnitz
-
Kontaktdaten:
Re: Wie mache ich so etwas, welche Methode empfiehlt sich?
Wenn du schon mit C# und Visual Studio zu tun hattest, dann schau dir mal Mono und MonoDevelop an. Ich denke es wird dir gefallen. Bin auch grad dabei meine C#- WinProjekte auf Mono zu migrieren.
Viele Grüße,
FoXxX
Viele Grüße,
FoXxX