Programmausgaben anderer Programme abfangen?

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

Programmausgaben anderer Programme abfangen?

Beitrag von Toshy »

Hallo.
Mit Linux hatte ich bisher nicht viel zu tun.
Allerdings habe ich eine VM und ein Tablet mit einer Linuxvariante.
Dort muß ich allerdings öfter mal dieses "root" oder wie das heißt nutzen. Um halt einige Programme aufzurufen, zu installieren (yum install) oder einige Systemdateien zu ändern. Oder auch Dateirechte ändern.

Um einiges einfacher zu machen, will ich ein kleines Tool schreiben, bei dem ich dann nur in einem Menü klicken muß, damit einige dinge passieren. Und das Ergebnis natürlich überprüft wird.
Ich habe aber keine Ahnung wie ich das machen soll.

Anfänglich wäre da das installieren von neuen Programmen. Unter Linux gibt es ja diese "repository" wo zum jeweiligen Anbieter die Programme drinn sind. Und man kann auch "externe" Programme einbinden.
bei mir läuft das über "yum *".
Um erst einmal anzufangen, würde ich also gerne wissen, wie ich Programme über PB installieren kann, Dateirechte ändern (ausführbar machen von programmen und scripten) usw. Entweder das dies über Funktionen geht oder ich halt diese Paketmanager und anderen Programme nutze. Dann natürlich die Ausgaben abfange um die auswerten zu können.

An sich wäre dann beim auswerten auch interessant, wie das unter anderen Sprachen (Deutsch, Englisch...) läuft. Also ob ich überhaupt auf Grund von Textausgaben auswerten sollte, oder es irgend welche Systemmessages gibt

Es gibt in Purebasic ja die Consolenfunktionen, die schaue ich mir gerade an. Aber ich bin mir nicht sicher, ob es genau damit funktioniert. Das vorwiegende Problem wäre da ja, das ich ja nicht die Grafikfunktioen (Gadgets) nutze.

Danke und vor allem frohe Ostern.
Gruß
Toshy
1. Win10
PB6.1
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Programmausgaben anderer Programme abfangen?

Beitrag von NicTheQuick »

Du kannst dafür einfach 'RunProgram()' mit entsprechenden Parametern nutzen. Wie du die Ausgabe der Programme ausliest, findest du auch in der Hilfe. Ebenso kannst du den Rückgabewert des ausgeführten Programms abfangen und schauen, ob es erfolgreich war. Informationen dazu findest du zu genüge im Internet oder über die Konsole in Linux, wenn du "man <befehl>" eingibst, also z.b. "man yum".
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

Re: Programmausgaben anderer Programme abfangen?

Beitrag von Toshy »

Danke.
Ich hatte mich dann gleich mal daran gemacht. An sich scheint es zu klappen, aber ich habe da noch zwei Probleme. Eines aber hat jetzt nichts mit dieser Sache zu tun. Da mache ich einen extra Beitrag auf.

Ich habe jetzt den Democode aus der hilfe (zu Runprogramm) mehrfach umgebaut, nur um etwas zu testen. Ganz ideal ist er sicher nicht, sollte auch nur sein um etwas zu testen.
Wie auch immer, ich fande jetzt zwar anscheinend die Ausgabe ab (jetzt mit ReadprogrammData) und lese das in einen einzigen Speicherbereich rein, aber es kommt zu quasi der selben Ausgabe wie bei ReadProgrammstring.

Nun starte ich yum und mit dem Paramater "list" aufrufe. Das sind dann natürlich ne gaaaanze Menge Zeilen. Ist absicht, sollte keine kürze Ausgabe sein. Beim Auslesen werden dann pro Paket soweit ich erkenne drei Angaben ausgegeben. Paketname, Wohl eine Versionsnummer und noch eine Angabe, die ich nicht zuordnen kann (mal steht da installed, mal was anderes. Vermutlich weil dort ja alle Pakete (installiert oder nicht) aufgeführt sind.

Mein Problem ist nun, diese Ausgabe sind manchmal nicht in der selben Zeile, sondern werden öfter in die zweite gesetzt. Damit kann ich ja nicht sicher sagen, was wozu gehört. Ich hatte gehoft, das Linux (Meegoo linux) die Daten aus einem Paket auswirft und dann entweder ein Zeilenendezeichen "chr(10)" ausgibt oder durch diese std-ausgabe oder wie das heißt iimmer eine neue Zeile begonnen wird. Zwar gibt es das Zeichen, aber nicht unbedingt nach dem Ende der Paketausgabedaten, sondern es sieht so aus, als ob im Hintergrund ein kleines Fenster existiert und wenn die Zeile voll ist einfach die nächste begonnen wird. Und dann nicht mal am anfang der Zeile.
Selbes geschieht, wenn ich einen Terminal eingebe und yum direkt nutze.
Wenn ich das Terminal ganz breit mache (unter virtualbox), kommt es dort soweit noch lesbar zur korrekten ausgabe. auf jeden fall so lange die Ausgaben nicht noch breiter sind. Theoretisch könnte es da aber sicher auch probleme geben.

Wie kann ich an dieses Problem ran gehen (ist ja nicht nur auf yum und list bezogen).
Suche ich vielleicht nur nach der falschen Zeilenendemarkierung?

Gruß
Toshy
1. Win10
PB6.1
Benutzeravatar
Waldixxl
Beiträge: 108
Registriert: 27.12.2005 17:35
Wohnort: Linz, Österreich

Re: Programmausgaben anderer Programme abfangen?

Beitrag von Waldixxl »

Hallo Toshy
leite die Ausgabe versuchsweise in eine Datei um und prüfe anschließend das Endzeichen....
Walter
Lesen bei schlechten Lichtverhältnissen ist nicht schlecht für die Augen, sondern trainiert sie sogar.

Linux Ubuntu Mate 18.04
PB 5.71
Intel i5
Antworten