Newsgroup: it.comp.os.linux.sys
Titolo: Redirezione output script bash

E' possibile redirigere gli errori di uno script bash
al programma mail per essere avvisati e l'output ad un file di log ?
 
Grazie mille
 
-- Yena --

 per essere avvisati e l'output ad un file di log ?
 
Se trattiamo lo script come un comando, questa mi pare la
soluzione più banale:
 
./script 2>&1 >logfile_dell'output_di_script | mail -s Errori_di_script mail@address
-- 
Bye, Lem
Ceterum censeo ISLAM esse delendum
_________________________________________________________________
Non sprecare i cicli idle della tua CPU, né quelli della tua GPU.
http://cleanenergy.harvard.edu/
 
http://spin.fh-bielefeld.de/
 
 
http://www.gpugrid.net/
 

 ../script 2>&1 >logfile_dell'output_di_script | mail -s Errori_di_script mail@address
 
No, questo non fa quanto richiesto.
Questo prende tutto lo standard error e lo manda sullo standard output,
quindi il tutto viene rediretto su file. Il pipe resterà vuoto.
 
./script >logfile |& mail -s Errori_di_script mail@address
 
 
-- 
Flavio Visentin
 
Scientists have finally discovered what's wrong with the female brain:
on the
left side, there's nothing right, and on the right side, there's nothing
left.

 ./script >logfile |& mail -s Errori_di_script mail@address
 
No, questo manda *tutto* in logfile e niente in mail:
 
lem@biggy:/tmp$ ./script >logfile |& mail -s Errori_di_script lem@localhost
Null message body; hope that's ok
 
lem@biggy:/tmp$ cat logfile
ls: impossibile accedere a /trot: File o directory non esistente
1
2
3
Cache
gnome-system-monitor.lem.3791140424
keyring-R0AGGK
logfile
output
pulse-cXyHZzsRwpC5
pulse-PKdhtXMmr18n
script
ssh-XlDlXDSJ1632
tmp0fpENS
virtual-lem.ZkaJ9U
ls: impossibile accedere a /pip: File o directory non esistente
./script: riga 6: trauff: comando non trovato


 quindi il tutto viene rediretto su file.
 
BTW: occhio che ho scritto:
 
./script 2>&1 >logfile
 
e non:
 
./script >logfile 2>&1


 BTW: occhio che ho scritto:
 
Yep... hai ragione, avevo letto male...
Peraltro è comunque strano che non funzioni |&.



 
 
in bash non è strano, lo sarebbe in [t]csh

 Peraltro è comunque strano che non funzioni |&.
 
Ci sono rimasto anch'io, ma la verità è che il man, a riguardo, è scritto 
male.
 
Prima dice che |& manda in pipe lo standard error, punto. Non dice 
"anche", quindi è naturale capire "solo lo standard error".
 
Subito dopo dice che che "|&" equivale a "2>&1 |".
 
Ma 2>&1 | redireziona verso il pipe *prima* lo standard output (con |, 
che ha la precedenza su ogni altra redirezione anche se è scritto dopo), 
e poi naturalmente anche lo standard error (con 2>&1, che sostanzialmente 
significa: mandami il 2 là dove in questo esatto momento stai mandando 
l'1, che è *già* sul pipe).
 
Insomma il man dà due informazioni contraddittorie, e quella giusta è la 
seconda.


 al programma mail per essere avvisati e l'output ad un file di log ?
 
Siamo su .SYS! va a postare su .nonvosglistudiareneancheunpo'.
 
En ache le risposte sembrano prese da .noiciciamosolostronzate.

 ./script >logfile |& mail -s Errori_di_script mail@address
 
L'operatore ``|&'' servisse ad avviare un coprocesso; è mutuato dalla 
ksh, non è presente su tutte le versioni della bash e non so se verrà
mantenuto nelle future.

 En ache le risposte sembrano prese da .noiciciamosolostronzate.
 
Perché? Se lui ha uno scriptino che gira in poco tempo, e non gl'interessa 
usare trap per gestire in tempo reale gli errori, che cosa ci sarebbe che 
non va?
 
Io scommetto che quello che ho postato fa proprio quel che vuole lui.


 Perché? 
 
Effettivamente la risposta errata è stata una sola e l'autore si è
corretto e si è scusato. ammentto che su questo punto ho esagerato.


Fenomeno
 
-- Yena --