Wie mache ich so etwas, welche Methode empfiehlt sich?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
RaginRob
Beiträge: 27
Registriert: 22.02.2008 01:12:48

Wie mache ich so etwas, welche Methode empfiehlt sich?

Beitrag von RaginRob » 05.03.2009 10:02:10

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!

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: Wie mache ich so etwas, welche Methode empfiehlt sich?

Beitrag von Duff » 05.03.2009 11:01:03

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.
Oh, yeah!

Benutzeravatar
hikaru
Moderator
Beiträge: 13950
Registriert: 09.04.2008 12:48:59

Re: Wie mache ich so etwas, welche Methode empfiehlt sich?

Beitrag von hikaru » 05.03.2009 11:09:15

Ich denke da bieten sich die TK-Varianten von Perl und Python an.

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: Wie mache ich so etwas, welche Methode empfiehlt sich?

Beitrag von cosmac » 05.03.2009 12:12:27

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 Debianglade 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.

Benutzeravatar
hikaru
Moderator
Beiträge: 13950
Registriert: 09.04.2008 12:48:59

Re: Wie mache ich so etwas, welche Methode empfiehlt sich?

Beitrag von hikaru » 05.03.2009 12:49:35

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.

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: Wie mache ich so etwas, welche Methode empfiehlt sich?

Beitrag von cosmac » 05.03.2009 13:36:21

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 ;)
Beware of programmers who carry screwdrivers.

Benutzeravatar
hikaru
Moderator
Beiträge: 13950
Registriert: 09.04.2008 12:48:59

Re: Wie mache ich so etwas, welche Methode empfiehlt sich?

Beitrag von hikaru » 05.03.2009 15:40:34

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.
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.
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.

RaginRob
Beiträge: 27
Registriert: 22.02.2008 01:12:48

Re: Wie mache ich so etwas, welche Methode empfiehlt sich?

Beitrag von RaginRob » 05.03.2009 18:26:05

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

Benutzeravatar
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?

Beitrag von foxxxone » 13.03.2009 14:28:43

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

Antworten