Logs sqlplus trop bavardent dans un script ksh
Résolu
Bonjour,
Dans le cadre de mon activité professionnelle, je suis amené parfois à modifier/créer des shell (ksh) sur un AIX 6. Le HIC, c'est qu'à la base, ce n'est pas mon domaine, mais bon on s'adapte...
Actuellement, je planche sur une problématique purement "esthétique", les personnelles de la boîte étant particulièrement pointilleux...
Voici le contenu (en partie...) de mon script actuelle :
[...]
echo "update TABLE_VALIDATION" >/tmp/requete_validation.sql
echo "set" >>/tmp/requete_validation.sql
echo " user_funct1='&1'," >>/tmp/requete_validation.sql
echo " email_funct1='&2'," >>/tmp/requete_validation.sql
echo " user_tech2='&3'," >>/tmp/requete_validation.sql
echo " email_tech1='&2'," >>/tmp/requete_validation.sql
echo " user_tech1='&1'," >>/tmp/requete_validation.sql
echo " user_funct2='&3';" >>/tmp/requete_validation.sql
echo "commit;" >>/tmp/requete_validation.sql
echo "exit;" >>/tmp/requete_validation.sql
sqlplus -s test/test @/tmp/requete_validation.sql $nom $mail $nom2
echo "La table TABLE_VALIDATION a été mise à jour"
rm /tmp/requete_validation.sql
Ce qui renvoie à l'écran une fois le script exécuté :
ancien 3 : user_funct1='&1',
nouveau 3 : user_funct1='madameA',
ancien 4 : email_funct1='&2',
nouveau 4 : email_funct1='madame.aaa@cheznous.fr',
ancien 5 : user_tech2='&3',
nouveau 5 : user_tech2='monsieurB',
ancien 6 : email_tech1='&2',
nouveau 6 : email_tech1='madame.aaa@cheznous.fr',
ancien 7 : user_tech1='&1',
nouveau 7 : user_tech1='madameA',
ancien 8 : user_funct2='&3'
nouveau 8 : user_funct2='monsieurB'
10431 ligne(s) mise(s) à jour.
Mais pour nos chers utilisateurs, cette dernière partie semble visuellement "trop insupportable"... Et ils souhaiteraient fortement ne plus voir ces logs quand ils exécutent ce script.
P.S. : les variables $nom $mail et $nom2 sont alimentées plus haut dans mon script. Je vous dispense de cette partie du script par souci de discrétion...
Please... help !
Merci d'avance ;-)
Dans le cadre de mon activité professionnelle, je suis amené parfois à modifier/créer des shell (ksh) sur un AIX 6. Le HIC, c'est qu'à la base, ce n'est pas mon domaine, mais bon on s'adapte...
Actuellement, je planche sur une problématique purement "esthétique", les personnelles de la boîte étant particulièrement pointilleux...
Voici le contenu (en partie...) de mon script actuelle :
[...]
echo "update TABLE_VALIDATION" >/tmp/requete_validation.sql
echo "set" >>/tmp/requete_validation.sql
echo " user_funct1='&1'," >>/tmp/requete_validation.sql
echo " email_funct1='&2'," >>/tmp/requete_validation.sql
echo " user_tech2='&3'," >>/tmp/requete_validation.sql
echo " email_tech1='&2'," >>/tmp/requete_validation.sql
echo " user_tech1='&1'," >>/tmp/requete_validation.sql
echo " user_funct2='&3';" >>/tmp/requete_validation.sql
echo "commit;" >>/tmp/requete_validation.sql
echo "exit;" >>/tmp/requete_validation.sql
sqlplus -s test/test @/tmp/requete_validation.sql $nom $mail $nom2
echo "La table TABLE_VALIDATION a été mise à jour"
rm /tmp/requete_validation.sql
Ce qui renvoie à l'écran une fois le script exécuté :
ancien 3 : user_funct1='&1',
nouveau 3 : user_funct1='madameA',
ancien 4 : email_funct1='&2',
nouveau 4 : email_funct1='madame.aaa@cheznous.fr',
ancien 5 : user_tech2='&3',
nouveau 5 : user_tech2='monsieurB',
ancien 6 : email_tech1='&2',
nouveau 6 : email_tech1='madame.aaa@cheznous.fr',
ancien 7 : user_tech1='&1',
nouveau 7 : user_tech1='madameA',
ancien 8 : user_funct2='&3'
nouveau 8 : user_funct2='monsieurB'
10431 ligne(s) mise(s) à jour.
Mais pour nos chers utilisateurs, cette dernière partie semble visuellement "trop insupportable"... Et ils souhaiteraient fortement ne plus voir ces logs quand ils exécutent ce script.
P.S. : les variables $nom $mail et $nom2 sont alimentées plus haut dans mon script. Je vous dispense de cette partie du script par souci de discrétion...
Please... help !
Merci d'avance ;-)
A voir également:
- Logs sqlplus trop bavardent dans un script ksh
- View recovery logs - Guide
- Script vidéo youtube - Guide
- Ghost script - Télécharger - Polices de caractères
- Mas script - Accueil - Windows
- Script cmd - Guide
1 réponse
Je n'ai pas très bien compris ce que tu voulais masquer ni quelle instruction écrit le texte "ancien 3 : etc...". Dans ce cas il suffit de rediriger la sortie standard et/ou la sortie d'erreur (ie les messages et les messages d'erreur) écrits par cette instruction dans /dev/null (que tu peux voir comme un trou noir).
Admettons que ce soit ta commande sqlplus, du coup elle devient :
Petits rappels sur les processus :
- un processus lit de l'information sur un flux d'entrée (par défaut l'entrée standard, /dev/stdin), ce qui concrètement revient à lire une saisie clavier dans la console,
- un processus écrit ses message dans un flux de sortie (par défaut le flux de sortie standard, /dev/stdout) ce qui concrètement revient à écrire dans la console
- un processus écrit ses message d'erreur dans un flux de sortie d'erreur (par défaut le flux de sortie standard, /dev/stderr) ce qui concrètement revient à écrire dans la console (mais ça reste un flux différent de /dev/stdout, ce qui permet de dissocier aisément ces deux flux)
- tous ses flux peuvent être redirigés par des opérateurs de redirection.
En shell tu as les opérateurs de redirection suivants :
- 1> (ou >) redirige le flux de sortie standard (/dev/stdout) dans un fichier (écrase le fichier s'il existe)
- 2> même principe avec le flux d'erreur (/dev/stderr)
- 1>> (ou >>) redirige le flux de sortie standard à la suite dans un fichier
- 2>> même principe avec le flux d'erreur (/dev/stderr)
- < alimente l'entrée standard à partir d'un fichier.
- | redirige le flux de sortie standard du processus à gauche de | sur l'entrée standard du processus de droite.
Bonne chance
ma_commande 1> /dev/null 2> /dev/null
Admettons que ce soit ta commande sqlplus, du coup elle devient :
sqlplus -s test/test @/tmp/requete_validation.sql $nom $mail $nom2 1> /dev/null 2> /dev/null
Petits rappels sur les processus :
- un processus lit de l'information sur un flux d'entrée (par défaut l'entrée standard, /dev/stdin), ce qui concrètement revient à lire une saisie clavier dans la console,
- un processus écrit ses message dans un flux de sortie (par défaut le flux de sortie standard, /dev/stdout) ce qui concrètement revient à écrire dans la console
- un processus écrit ses message d'erreur dans un flux de sortie d'erreur (par défaut le flux de sortie standard, /dev/stderr) ce qui concrètement revient à écrire dans la console (mais ça reste un flux différent de /dev/stdout, ce qui permet de dissocier aisément ces deux flux)
- tous ses flux peuvent être redirigés par des opérateurs de redirection.
En shell tu as les opérateurs de redirection suivants :
- 1> (ou >) redirige le flux de sortie standard (/dev/stdout) dans un fichier (écrase le fichier s'il existe)
- 2> même principe avec le flux d'erreur (/dev/stderr)
- 1>> (ou >>) redirige le flux de sortie standard à la suite dans un fichier
- 2>> même principe avec le flux d'erreur (/dev/stderr)
- < alimente l'entrée standard à partir d'un fichier.
- | redirige le flux de sortie standard du processus à gauche de | sur l'entrée standard du processus de droite.
Bonne chance
Un grand merci ;-)