hi .. ich schon wieder <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
wie kann in systemausgaben umleiten ?
z.Bsp. möchte ich die Ausgabe von PWD in eine variable speichern
inder shell wäre das so:
pwd_var=`pwd`
ist nur ein Beispiel
ich möchte später über C ein Shellscript starten und den ausgabewert für die bearbeitng einer fehlermeldungen verwenden.
danke
systemausgabe umleiten
Re: systemausgabe umleiten
Wahrscheinlich ist popen(3) das, was Du suchst:
man 3 popen
Damit kannst Du dis Ausgabe eines Kommandos zeilenweise einlesen und dann wie gewünscht weiterberarbeiten/analysieren.
Arbeitest Du immer noch an Deiner Backup-Lösung? Und ist immer noch Sicherheit der Hauptgrund für die Portierung? Dann solltest du möglichst gar nicht mehr auf Shellskripte zurückgreifen. Die sind zu leicht manipulierbar von aussen, ohne dabei das Skript ändern zu müssen (siehe beispielsweise Shellvariable IFS). Man kann sichere Shellskripte schreiben, aber das ist vergleichsweise aufwendig. Also hast Du m.E. die Wahl zwischen einem C-Programm, dass ein aufwändig gesichertes Skript aufruft, und einem einzelnen aufwändig gesichertem Skript. Ich persönlich würde die Variante ohne C-Programm bevorzugen.
Jochen
man 3 popen
Damit kannst Du dis Ausgabe eines Kommandos zeilenweise einlesen und dann wie gewünscht weiterberarbeiten/analysieren.
Arbeitest Du immer noch an Deiner Backup-Lösung? Und ist immer noch Sicherheit der Hauptgrund für die Portierung? Dann solltest du möglichst gar nicht mehr auf Shellskripte zurückgreifen. Die sind zu leicht manipulierbar von aussen, ohne dabei das Skript ändern zu müssen (siehe beispielsweise Shellvariable IFS). Man kann sichere Shellskripte schreiben, aber das ist vergleichsweise aufwendig. Also hast Du m.E. die Wahl zwischen einem C-Programm, dass ein aufwändig gesichertes Skript aufruft, und einem einzelnen aufwändig gesichertem Skript. Ich persönlich würde die Variante ohne C-Programm bevorzugen.
Jochen
Re: systemausgabe umleiten
hi Jochen ...
dank dir für die schnelle und gute Antwort (wie immer) <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
Ich bin leider noch blutiger C-Anfänger - versuche noch unwissen mit fleiß zu kompensieren.
das Scripten ( Shell besser als cgi) bekomme ich gut hin (arbeite seit längerem mit Unix), nur leider kann ich wenig von diesem Wissen in C(++) umsetzen.
Deswegen hat mich ja auch das Interesse für C(++) gepackt.
Ich habe auch schon Unsummen in Bücher investiert <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle"> , bin aber der Meinung, daß Probieren und das Lösen kleinerer Probleme der bessere Lehrmeister ist.
Praxis ist halt besser - die fehlt halt nur.
kennst du vielleicht eine Seite, in der kleinere und hilfreiche Beispiele zu finden sind ?
PS: ich hänge noch an der BackUp-Lösung an besagtem Problem.
in der Schell würde ich die Config mit grep auslesen, ob sich die Zeichenkette "user=allow" in dieser Datei befindet ... wenn ja, dann weiter, sonst exit.
Die Umsetzung in C bereitet mir da mehr Schwierigkeiten. Ich benutze dazu dies als Referenz:
http://www.pronix.de/ckurs/ckurs83.html <- zumindest kann ich so erstmal einen Text lesen, nur wie ich ihn Zeilenweise nach eine bestimmten zeichenkette durchsuche weis ich noch nicht.
Nochmals danke und Gruß
dank dir für die schnelle und gute Antwort (wie immer) <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
Ich bin leider noch blutiger C-Anfänger - versuche noch unwissen mit fleiß zu kompensieren.
das Scripten ( Shell besser als cgi) bekomme ich gut hin (arbeite seit längerem mit Unix), nur leider kann ich wenig von diesem Wissen in C(++) umsetzen.
Deswegen hat mich ja auch das Interesse für C(++) gepackt.
Ich habe auch schon Unsummen in Bücher investiert <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle"> , bin aber der Meinung, daß Probieren und das Lösen kleinerer Probleme der bessere Lehrmeister ist.
Praxis ist halt besser - die fehlt halt nur.
kennst du vielleicht eine Seite, in der kleinere und hilfreiche Beispiele zu finden sind ?
PS: ich hänge noch an der BackUp-Lösung an besagtem Problem.
in der Schell würde ich die Config mit grep auslesen, ob sich die Zeichenkette "user=allow" in dieser Datei befindet ... wenn ja, dann weiter, sonst exit.
Die Umsetzung in C bereitet mir da mehr Schwierigkeiten. Ich benutze dazu dies als Referenz:
http://www.pronix.de/ckurs/ckurs83.html <- zumindest kann ich so erstmal einen Text lesen, nur wie ich ihn Zeilenweise nach eine bestimmten zeichenkette durchsuche weis ich noch nicht.
Nochmals danke und Gruß
Re: systemausgabe umleiten
> kennst du vielleicht eine Seite, in der kleinere und hilfreiche Beispiele zu finden sind ?
Leider nein. Meine eigenen C-Kenntnisse haben (damals) schwer von eine 4wöchigen Kurs profitiert - aber das war auch von der Arbeit aus bezahlt worden.
Kennst Du das C-Puzzle-Buch? Schau es Dir erst mal an - es enthält <i>wirklich</i> schwere Beispielprogramme, deren Ausgabe man im Kopf/auf Papier erarbeiten soll. Wenn man das schafft, hat man das jeweilige Thema (Operatoren, Pointer, dynamische Speicherallozierung, Arrays,...) nicht nur verstanden, sondern auch verinnerlicht <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">. Das hat mich schon etwas weitergebracht.
Jochen
Leider nein. Meine eigenen C-Kenntnisse haben (damals) schwer von eine 4wöchigen Kurs profitiert - aber das war auch von der Arbeit aus bezahlt worden.
Kennst Du das C-Puzzle-Buch? Schau es Dir erst mal an - es enthält <i>wirklich</i> schwere Beispielprogramme, deren Ausgabe man im Kopf/auf Papier erarbeiten soll. Wenn man das schafft, hat man das jeweilige Thema (Operatoren, Pointer, dynamische Speicherallozierung, Arrays,...) nicht nur verstanden, sondern auch verinnerlicht <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">. Das hat mich schon etwas weitergebracht.
Jochen
Re: systemausgabe umleiten
hi Jochen
also popen macht bei mir nicht das, was ich will
Beispiel:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#include <stdio.h>
main() {
FILE *unam
unam = popen("uname -n", "r");
printf("%s", unam);
pclose(unam);
}
</font><hr></pre></blockquote>
was ist unam dann ? offensichtlich kein string ?
denn ich möchte es später mit
if(strcmp(unam, "linux")==0){
printf("Hostname ist %s", unam);
} else {
printf("Hostname ist nicht %s", unam);
}
vergleichen. da aber schon printf mist ausgiebt, so kann das auch nicht funktionieren. wie wandel ich unam in einen string um - oder habe ich das problem nicht richtig verstanden ?
DANKE
PS: diese Beispiel hat keinen praktischen Wert - reine Übung <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
also popen macht bei mir nicht das, was ich will
Beispiel:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#include <stdio.h>
main() {
FILE *unam
unam = popen("uname -n", "r");
printf("%s", unam);
pclose(unam);
}
</font><hr></pre></blockquote>
was ist unam dann ? offensichtlich kein string ?
denn ich möchte es später mit
if(strcmp(unam, "linux")==0){
printf("Hostname ist %s", unam);
} else {
printf("Hostname ist nicht %s", unam);
}
vergleichen. da aber schon printf mist ausgiebt, so kann das auch nicht funktionieren. wie wandel ich unam in einen string um - oder habe ich das problem nicht richtig verstanden ?
DANKE
PS: diese Beispiel hat keinen praktischen Wert - reine Übung <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
Re: systemausgabe umleiten
Vielleicht solltest du doch mal das Buch lesen.
Dann wüsstest du, dass du ein Pointer vom Typ FILE ausgelesen werden muss. Dafür nimmst du am besten Funktionen wie "read()". Du solltest die Manpage ebenfalls zu rate ziehen !!!!!
Dann wüsstest du, dass du ein Pointer vom Typ FILE ausgelesen werden muss. Dafür nimmst du am besten Funktionen wie "read()". Du solltest die Manpage ebenfalls zu rate ziehen !!!!!
Re: systemausgabe umleiten
danke habs schon gelöst ... ach ja Labba: deine "!"-Taste klemmt
Gruß
Gruß