Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/12/2010, 12h20   #1
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 81
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 81
Points : 11
Points : 11
Par défaut commande script dans un script shell

Bonjour,

je veux enregistrer l'activité d'un script shell, alors j'ai penser d'utiliser la commande:
script trace.txt au début de mon script, et exit à la fin mais c'était pas fonctionner, une petite demonstartion vaut bien je pense.
mon script s1.sh
Code :
1
2
3
4
5
6
 
#!/bin/sh
script trace.txt
pwd
echo "Bonjour"
exit
résultat après exécution :
Le script a débuté, le fichier est trace.txt
mais quand je tape exit voila l'autre résultat :
Code :
1
2
3
4
5
 
exit
Script complélé, le fichier est trace.txt
/home/oracle/Bureau
Bonjour
si vous avez d'autre solution pour enregistrer la trace je serai proneur.
Merci
m3am3a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2010, 16h45   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 064
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 064
Points : 4 123
Points : 4 123
rtfm
Code :
1
2
3
4
5
6
!/bin/sh
script trace.txt -c '
pwd
echo "Bonjour"
exit
'
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/12/2010, 11h13   #3
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 81
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 81
Points : 11
Points : 11
Bonjour et merci encore pour votre aide, alors j'ai un autre problème quand j'ai utilisé la même méthode mais maintenant avec un script sql intégré.
voila mon script :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
!#/bin/sh
script trace.txt -c '
x=`sqlplus -s system/sys1@dba<<EOF
set pages 0
set serveroutput on
  DECLARE
  	v_count INTEGER := 0;
  BEGIN
  select count(1) into v_count from dba_users where username = UPPER ('mylogin');
  IF (v_count != 0)
  THEN
  DBMS_OUTPUT.put_line ('EXIST');
  ELSE
  DBMS_OUTPUT.put_line ('USER_NOT_EXIST');
  END IF;
  END;
/
EOF`
echo $x
exit
'
après une exécution, une erreur oracle se produit :
Code :
1
2
3
4
 
Le script a débuté, le fichier est trace.txt
select count(1) into v_count from dba_users where username = UPPER (MYLOGIN); ERROR at line 4: ORA-06550: line 4, column 71: PL/SQL: ORA-00904: "MYLOGIN": invalid identifier ORA-06550: line 4, column 3: PL/SQL: SQL Statement ignored ORA-06550: line 7, column 25: PLS-00201: identifier 'EXIST' must be declared ORA-06550: line 7, column 3: PL/SQL: Statement ignored ORA-06550: line 9, column 25: PLS-00201: identifier 'USER_NOT_EXIST' must be declared ORA-06550: line 9, column 3: PL/SQL: Statement ignored
Script complélé, le fichier est trace.txt
NB: quand je commente les lignes :
# script trace.txt -c '
# exit
# '
tous marche bien.
même je pense qu'un problème de ( ' ) parvient, parce que quand j'ajoute quelque ligne qui contient de quotes une autre erreur s'affiche :
script :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
!#/bin/sh
script trace.txt -c '
x=`sqlplus -s system/sys1@dba<<EOF
set pages 0
set serveroutput on
  DECLARE
  	v_count INTEGER := 0;
  BEGIN
  select count(1) into v_count from dba_users where username = UPPER ('mylogin');
  IF (v_count != 0)
  THEN
  DBMS_OUTPUT.put_line ('EXIST');
  ELSE
  DBMS_OUTPUT.put_line ('USER_NOT_EXIST');
  EXECUTE IMMEDIATE ('create user mylogin identified by mypass');
  END IF;
  END;
/
EOF`
echo $x
exit
'
Après exécution :
Code :
1
2
3
4
5
 
Le script a débuté, le fichier est trace.txt
bash: -c: line 1: Caractère de fin de fichier (EOF) prématuré lors de la recherche du « ` » correspondant
bash: -c: line 14: Erreur de syntaxe : fin de fichier prématurée
Script complélé, le fichier est trace.txt
pardonnez moi si j'ai trop bavarde mais je veux seulement vous donner le max de détails.
merci
m3am3a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 12h10   #4
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 064
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 064
Points : 4 123
Points : 4 123
bien vu, en effet les ' peuvent poser problème.

soit remplace par :
Code :
1
2
3
4
script trace.txt -c "
#...
exit
"
soit protège les ' dans ta commande sql :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/sh

script trace.txt -c '
x=`sqlplus -s system/sys1@dba<<EOF
set pages 0
set serveroutput on
  DECLARE
        v_count INTEGER := 0;
  BEGIN
  select count(1) into v_count from dba_users where username = UPPER (\'mylogin\');
  IF (v_count != 0)
  THEN
  DBMS_OUTPUT.put_line (\'EXIST\');
  ELSE
  DBMS_OUTPUT.put_line (\'USER_NOT_EXIST\');
  END IF;
  END;
/
EOF`
echo $x
exit
'
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/12/2010, 12h25   #5
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 81
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 81
Points : 11
Points : 11
merci beaucoup N BaH, mais seulement pour la 1ere méthode je ne pense pas qu'il va exécuter le code qui se trouve entre " ".
Après exécution de la 1ere méthode :
Code :
1
2
3
4
5
 
Le script a débuté, le fichier est trace.txt
bash: line 3: PL/SQL: Aucun fichier ou dossier de ce type
 
Script complélé, le fichier est trace.txt
Après exécution de la 2eme méthode :
Code :
1
2
3
 
script5.sh: line 9: Erreur de syntaxe près du symbole inattendu « ) »
script5.sh: line 9: `  select count(1) into v_count from dba_users where username = UPPER (\'mylogin\'); '
merci
m3am3a est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h42.


 
 
 
 
Partenaires

Hébergement Web