Logs sqlplus trop bavardent dans un script ksh

Résolu/Fermé
david59000 Messages postés 6 Date d'inscription vendredi 12 octobre 2012 Statut Membre Dernière intervention 15 octobre 2012 - 15 oct. 2012 à 09:56
mamiemando Messages postés 33073 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2024 - 15 oct. 2012 à 20:14
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 ;-)



A voir également:

1 réponse

mamiemando Messages postés 33073 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2024 7 748
15 oct. 2012 à 10:12
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).

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
0
david59000 Messages postés 6 Date d'inscription vendredi 12 octobre 2012 Statut Membre Dernière intervention 15 octobre 2012
15 oct. 2012 à 11:03
Merci beaucoup pour toutes ces précieuses informations. Je viens d'essayé en redirigeant ma commande sqlplus vers les sorties standard et sortie d'erreur... et ça marche, NICKEL !

Un grand merci ;-)
0
mamiemando Messages postés 33073 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 avril 2024 7 748
15 oct. 2012 à 20:14
De rien bonne continuation !
0