OVH Cloud OVH Cloud

Récupération du handles STDERR

2 réponses
Avatar
jeremie_renou
Bonjour,

J'aimerai en cas d'erreur récupérer l'ensemble des données contenues
dans le handles STDERR dans une variable.

Ex : Pour la connection à une base de données sur le user n'est pas
bon alors j'ai à l'affichage :

Msg 4002, Level 14, State 1
Server 'ase120_sqlsrv', Line 1
Login failed.
DB-Library error:
Login incorrect.

J'aimerai récupérer ces lignes pour pouvoir me les envoyer par mail.

Merci par avance de votre intérêt.

Jérémie RENOU

2 réponses

Avatar
Denis -esp2008-
Bonjour,

J'aimerai récupérer ces lignes pour pouvoir me les envoyer par mail.
S'il n'est pas nécessaire que ce soit beau (écrit à la volée, donc à

corriger, mais l'idée est là) :

open STDERR, "|/usr/sbin/sendmail -t";
print STDERR "To: ";
print STDERR "From: n".
print STDERR "Subject: Zut il y a une erreurn";
print STDERR "Mime-Version: 1.0nContent-Typetext/plain; (...)"

Le programme à la suite et un close à la fin.

--
Denis

Avatar
Stephane Chazelas
2003/10/28, 11:39(+01), Denis -esp2008-:
J'aimerai récupérer ces lignes pour pouvoir me les envoyer par mail.
S'il n'est pas nécessaire que ce soit beau (écrit à la volée, donc à

corriger, mais l'idée est là) :

open STDERR, "|/usr/sbin/sendmail -t";
print STDERR "To: ";
print STDERR "From: n".
print STDERR "Subject: Zut il y a une erreurn";
print STDERR "Mime-Version: 1.0nContent-Typetext/plain; (...)"


Mais ça enverra le message meme s'il n'y a pas d'erreur.

On peut réouvrir STDERR en mémoire:

# au début:
close STDERR;
open STDERR, '>', $variable;

# ...

# À la fin:
if (length $variable) {
open MAIL "|sendmail -t";
print MAIL "To: ";
print MAIL "From: n".
print MAIL "Subject: Zut il y a une erreurnn";
print MAIL $variable;
close MAIL;
}

--
Stéphane ["Stephane.Chazelas" arobase "free.fr"]