PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Thema Stdout Umlenkung



keiner_1
17.06.02, 22:25
Hallo Geeks

Ich fange hier ein neuer Help Thread für Linuxer an:

Frage: Wie kann man den Output eines Programms auf der Konsole anzeigen lassen und gleichzeitig in ein File speichern??

Antwort: mit dem Command tee

Beispiel:
$ ls D* | tee ls.tee
Bootdisk-HOWTO.pdf
Control Panel
DE-Kernel-HOWTO.dvi
DE-Kernel-HOWTO.ps
Mülleimer
Persönliches Verzeichnis
www.redhat.com
dies war die Anzeige an meinem Bildschirm...

$ more ls.tee
Bootdisk-HOWTO.pdf
Control Panel
DE-Kernel-HOWTO.dvi
DE-Kernel-HOWTO.ps
Mülleimer
Persönliches Verzeichnis
www.redhat.com

und hier steht es im File!

Ergänzungen willkommen

greetz
adme

muchmarc
23.06.02, 07:17
Wie lenke ich die Standardausgabe eines Progs in eine Datei um,
ohne Ausgabe auf dem Bildschirm?

Lsg 1:

$ Prog > Ausgabedatei

Diese Datei wird jedes mal neu Beschrieben, der alte Inhalt wird gelöscht.

Lsg 2:

$ Prog >> Ausgabedatei

Nun wird der Output des Progs an die Datei angehangen.

geronet
23.06.02, 11:30
Wie lenke ich die Standardausgabe und die Standardfehlerausgabe eines Progs in eine Datei um,

ohne Ausgabe auf dem Bildschirm?

Lsg 1:

$ Prog > Ausgabedatei 2>&1

Diese Datei wird jedes mal neu Beschrieben, der alte Inhalt wird gelöscht.

Lsg 2:

$ Prog >> Ausgabedatei
2>&1
Nun wird der Output des Progs an die Datei angehangen.

SeeksTheMoon
24.06.02, 13:24
wenn ein Programm im Hintergrund (z.B. nohup programm &) laufen soll und man keine logs lesen will, dann kann man als Ausgabedatei /dev/null definieren.
Gut für den mldonkey...

next
24.06.02, 16:05
hi,
prog 2> /dev/null :)

cu next

macolo
26.07.02, 15:55
hi,

gibt es eine möglichkeit, stderr und stdout für das ganze script anzugeben?

bsp:

ich habe ein script mit 100 iptables befehlen zur erstellung einer firewall. ich möchte, dass jegliche rückmeldung von iptables in eine datei umgeleitet wird.

es ist ziemlich mühsam hinter jeden iptables befehl ein >log 2>&1 zu setzen. :(

tia

greets

macolo

ps: für "set" gibt's afaik keine solche option. :(

poet
26.07.02, 16:40
ich verstehe nicht so recht. auf jeden fall kannst du 2>&1 auch durchs kürzere &> ersetzen

macolo
26.07.02, 20:14
@poet:

danke für deine antwort.

das sieht so aus:


iptables -P POSTROUTING DROP -t nat
iptables -P INPUT ACCEPT


## REJECT

iptables -t filter -A INPUT -p tcp --destination-port 135:139 -i eth0 -j REJECT
iptables -t filter -A INPUT -p tcp --destination-port 445 -i eth0 -j REJECT
iptables -t filter -A INPUT -p tcp --destination-port 5000 -i eth0 -j REJECT

## DROP

## ACCEPT

##MASQUERADE

#forwarding

echo 1 > /proc/sys/net/ipv4/ip_forward

echo "forwarding enabled"

# activating masquerading for sources 192.168.0.0-192.168.0.255

iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -o eth0 -j MASQUERADE

hinter jeden iptables befehl &> zu schreiben ist ein bisschen mühsam. darum möchte ich wissen, ob es auch eine globale, script-weite einstellung für eine umleitung gibt.

tia

greets

macolo

Jasper
02.08.02, 15:45
Original geschrieben von macolo

hinter jeden iptables befehl &> zu schreiben ist ein bisschen mühsam. darum möchte ich wissen, ob es auch eine globale, script-weite einstellung für eine umleitung gibt.


pack die befehle einfach in eine subshell und leite dann die ausgaben um:

###
befehl1 >file1 2>&1

( befehl2; befehl3; befehl4 ) >file2 2>&1
###

ausgaben von befehl1 gehen in file1, ausgaben von befehl2-4 in file2 da subshell.

-j

lankin
05.08.02, 17:37
hai auch,

das globale umlenken im file
geht natuerlich auch so:

exec 1>/tmp/logfile
exec 2>/dev/null

ab der stelle an der die einträge steen
wird alles umgeleitet.

gruss
lankin

Jasper
05.08.02, 21:28
Original geschrieben von lankin

das globale umlenken im file
geht natuerlich auch so:

exec 1>/tmp/logfile
exec 2>/dev/null

ab der stelle an der die einträge steen
wird alles umgeleitet.


jo, geht auch. leider lassen sich die umleitungen nicht aufheben AFAIK.

-j

lankin
06.08.02, 10:12
hai jasper,

nun, eine stelle an der ich nur einen workaround
anbieten kann.

------------------------------------
#umleiten anfang:
exec 1>&3
exec 1>& logdile

ls -lR /usr

#umleitung ende
exec 1>&3

------------------------------------
hintergrund es gibt mehr als die kanaele
"1" (stdout) und "2" (stderr).

kanal "3" lege ich hier erstmal auf "stdout"
um , am ende den kanal "1" auf "3" und
somit wieder auf "stdout".
stderr könnte man z.b. auf kanal "4" legen.

ich bin mir sicher, dass die umleitung auch anders
abzuschalten ist, aber da muss sogar ich passen *g*.

ciao
lankin

explosiver
09.08.02, 20:17
hallo

kann mir jemand sagen unter was ich STDOUT finde im handbuch ???

habe es nicht gefunden, und ich weiss nicht wo die ausgabe stdout hinführt,
bzw wie man sie sehen kann, ich weiss, doofe frage aber ich habs wirklich noch
nirgends gelesen.

wäre dankbar für ein kleines script beispiel mit anzeige von stdout.
bei den anderen bsp. fasse ich es nicht ganz,da ich mir STDOUT gar nicht irgendwie
vorstellen kann was es ist,

vielen dank

explo

Danny

es regnet und regnet...

BeS
10.08.02, 00:29
Hi,


man stdout


stdout geht auf das terminal (auf den Bildschrim), so wie stdin auf die Tastatur "hört"

explosiver
10.08.02, 03:23
das ist nur englisch

kannst du mir sagen wie ich das nachschauen kann in den büchern unter was ?
unter stdout nichts gefunden.

und ich habe ein programm da heisst es ausgabe an stdout doch ich she nichts.

was mache ich falsch ?

danke um jede antwort

ich habe mich wirklich darum bemüht es zu verstehen, wirklich .

Danny
kannst du mir ein 3 statz beispiel liefern an der ich stdout am bilschrim sehen kann ?
das wäre echt nett, die manpage isz auf eglisch leider.

danke+dirr
Greetz
DANNY

komisch, sie space taske funktionert wieder..:-)

lankin
12.08.02, 11:28
hai explorer,

schau einfach unter ausgabe-umlenkung
oder
suche bei "google" "stdout", etc ...

aber wie BeS schon sagte,

kanal 0 == stdin ist die tastarur
kanal 1 == stdout der bildschirm (ursprünglich terminal)
kanal 2 == stderr der fehlerkanal

das ist eigentlich schon alles. im normalen
standart regelt die shell das für alle progis
automatisch, es sei denn man gast ihr etwas
anderes.

gib z.b. einfach "ls" ein und das
ergebnis steht wie von geisterhand auf ....
genau: stdout *g*

am besten schnappst du dir ein shellbuch,
kornshell, z-shell, etc unter dem punkt
ausgabe-umlenkung.

ciao lankin

muchmarc
12.08.02, 12:17
In dem Buch Linux Unix Systemprogrammierung von AW -Verlag
gibs Hintergrundwissen für stdout/in/error.
Ist aber mehr was für Programmierer...

mfg
muchmarc

explosiver
12.08.02, 14:14
ja merci und danke,


jetzt kapiere ich es endlich, also ist die tastatur ein kanal, die fehlerausgabe, und der bildschrirm
also weiss ich endlich bescheid wo ich anfangen kann damit zu arbeiten und es
weiterzulernen.

danke

greetz

Danny

explosiver
13.08.02, 09:46
du sagtest das buch vom AW Verlag.

hast Du mir die ISBN Nummer ??? wäre sehr nett, denn ich möchte dies
Buch kaufen..resp. bestellen...

Thanks

Greetz

Danny

muchmarc
13.08.02, 09:57
da ich zur Zeit leider nicht in Deutschland arbeite,
kann ich dir die ISBN nicht schicken.
Entweder du wartest noch nen halben Monat oder
gehst auf die HP von Addison Wesly (schreibt man
das so? -Ich kann mir das nicht merken *schäm*)

mfg
muchmarc