Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1351 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs

  [script shell] petit pb

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[script shell] petit pb

n°505320
Nenelle
Josie Maran addicted
Posté le 16-06-2004 à 22:52:31  profilanswer
 

Salut à tous
 
Je suis pas tres fort en script shell donc soyez indulgents;
 
Je veux faire un petit script de sauvegarde de tout ce qui est "important", pour que ce script se lance toutes les 6heures via cron.
 
Voici mon script
 

Code :
  1. #!/bin/sh
  2. TOP=/home/save
  3. CONF_FOLDER=conf
  4. DEST=$TOP/$CONF_FOLDER
  5. MYSQL_PASSWORD=xxxxxxxxx
  6. GREEN_BEGIN="\033[1;32m"
  7. RED_BEGIN="\033[1;31m"
  8. COLOR_END="\033[0m"
  9. call_command()
  10. {
  11.     echo -n "$1"
  12.     $2 > /dev/null 2> /dev/null
  13.     display_result
  14. }
  15. display_result()
  16. {
  17.     RESULT=$?
  18.     if [ $RESULT -eq 0 ]
  19.         then
  20.         echo "[$GREEN_BEGIN OK $COLOR_END]"
  21.     else
  22.         echo "[$RED_BEGIN KO $COLOR_END]"
  23.     fi
  24. }
  25. call_command "Creation du repertoire de sauvegarde...                                " "mkdir $DEST"
  26. call_command "Creation du repertoire de sauvegarde des fichiers de root...           " "mkdir $DEST/root"
  27. call_command "Copie du .profile de root...                                           " "cp /root/.bashrc $DEST/root/.profile"
  28. call_command "Copie du .bashrc de root...                                            " "cp /root/.profile $DEST/root/.bashrc"
  29. call_command "Sauvegarde de la liste des packages installes...                       " "pkg_info > $DEST/PACKAGES"
  30. call_command "Compression integrale du dossier /etc...                               " "tar -czf $DEST/etc.tar.gz /etc"
  31. call_command "Sauvegarde des bases MySQL...                                          " "/usr/local/bin/mysqldump -u$USER -p$MYSQL_PASSWORD --all-databases\
  32. > $DEST/all-databases.sql"
  33. call_command "Compression du dossier de sauvegarde...                                " "tar -czf $TOP/conf-`date '+%d-%m_%Hh%M'`.tar.gz $DEST"
  34. call_command "Suppression du dossier de sauvegarde...                                " "rm -rf $DEST"


 
Bon voici mon probleme : tout marche parfaitement et la tarball de sauvegarde est bien crée... sauf la commande de sauvegarde des bases MySQL qui échoue.
 
Lorsque je lance cette même commande depuis le shell elle s'execute sans probleme.
 
Mais depuis le script ca m'affiche le usage de mysqldump comme si je ne lui fournissais pas les parametres qu'il attend :
 

Code :
  1. Usage: mysqldump [OPTIONS] database [tables]
  2. OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
  3. OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
  4. For more options, use mysqldump --help


 
Si cela peut servir je précise que je suis sous OpenBSD 3.5 fraichement upgradé depuis la 3.4, MySQL serveur version 4.0.18 qui tourne sans probleme, et bash 2.05b pour le shell.
 
Auriez vous une idée ?


Message édité par Nenelle le 16-06-2004 à 23:01:10

---------------
http://chilax.com/forum/index.php?showforum=46 => !!!
mood
Publicité
Posté le 16-06-2004 à 22:52:31  profilanswer
 

n°505322
Klaimant
?
Posté le 16-06-2004 à 22:54:50  profilanswer
 

pk ta ligne de commande mysql est séparée en deux ?


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
n°505324
Nenelle
Josie Maran addicted
Posté le 16-06-2004 à 23:00:09  profilanswer
 

elle ne l'est pas en vrai, c'est en faisant un c/c depuis emacs.


---------------
http://chilax.com/forum/index.php?showforum=46 => !!!
n°505330
Klaimant
?
Posté le 16-06-2004 à 23:03:36  profilanswer
 

si tu fais sans passer par call_command ca marche pas non plus ??


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
n°505333
Nenelle
Josie Maran addicted
Posté le 16-06-2004 à 23:09:26  profilanswer
 

ah si ca marche !!
 
mais alors qu'est ce qui se cloche ? je passe bien en deuxieme parametre la commande a executer comme pour les autres appels de call_command :/


---------------
http://chilax.com/forum/index.php?showforum=46 => !!!
n°505334
Klaimant
?
Posté le 16-06-2004 à 23:10:29  profilanswer
 

la je sais pas, je m'en sert jamais de call_command :/


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
n°505335
Nenelle
Josie Maran addicted
Posté le 16-06-2004 à 23:11:02  profilanswer
 

j'ai affiché $2 dans call_command et il est comme il faut :(


---------------
http://chilax.com/forum/index.php?showforum=46 => !!!
n°505336
void_ppc
Posté le 16-06-2004 à 23:11:15  profilanswer
 

essaye de faire un echo $1 dans call_command() pour voir si il manque pas des morceaux

n°505337
Nenelle
Josie Maran addicted
Posté le 16-06-2004 à 23:12:02  profilanswer
 

Klaimant a écrit :

la je sais pas, je m'en sert jamais de call_command :/


 
mais c une fonction que g defini moi meme :)
 
en tout cas merci Klaimant jme souviens que tu m'avais deja aidé plus d'une fois a resoudre des pbs :)
 
d'autres idees les gens ?


---------------
http://chilax.com/forum/index.php?showforum=46 => !!!
n°505339
Nenelle
Josie Maran addicted
Posté le 16-06-2004 à 23:13:38  profilanswer
 

void_ppc a écrit :

essaye de faire un echo $1 dans call_command() pour voir si il manque pas des morceaux


 
c'est ce que j'ai fait... et ca a l'air bon :
 

Code :
  1. Creation du repertoire de sauvegarde...
  2. commande executer = mkdir /home/toto/conf
  3. [ OK ]
  4. Creation du repertoire de sauvegarde des fichiers de root...
  5. commande executer = mkdir /home/toto/conf/root
  6. [ OK ]
  7. Copie du .profile de root...
  8. commande executer = cp /root/.bashrc /home/toto/conf/root/.profile
  9. [ OK ]
  10. Copie du .bashrc de root...
  11. commande executer = cp /root/.profile /home/toto/conf/root/.bashrc
  12. [ OK ]
  13. Sauvegarde de la liste des packages installes...
  14. commande executer = pkg_info > /home/toto/conf/PACKAGES
  15. [ OK ]
  16. Compression integrale du dossier /etc...
  17. commande executer = tar -czf /home/toto/conf/etc.tar.gz /etc
  18. [ OK ]
  19. Sauvegarde des bases MySQL...
  20. commande executer = /usr/local/bin/mysqldump -uroot -pxxxxxxxx --all-databases > /home/toto/conf/all-databases.sql
  21. [ KO ]
  22. Compression du dossier de sauvegarde...
  23. commande executer = tar -czf /home/toto/conf-16-06_23h12.tar.gz /home/toto/conf
  24. [ OK ]
  25. Suppression du dossier de sauvegarde...
  26. commande executer = rm -rf /home/toto/conf
  27. [ OK ]


Message édité par Nenelle le 16-06-2004 à 23:13:57

---------------
http://chilax.com/forum/index.php?showforum=46 => !!!
mood
Publicité
Posté le 16-06-2004 à 23:13:38  profilanswer
 

n°505340
Klaimant
?
Posté le 16-06-2004 à 23:15:19  profilanswer
 

void_ppc a écrit :

essaye de faire un echo $1 dans call_command() pour voir si il manque pas des morceaux


 
$2(la commande que tu passes en paramètres) c'est une bonne idée ca void_ppc


Message édité par Klaimant le 16-06-2004 à 23:15:49

---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
n°505350
Nenelle
Josie Maran addicted
Posté le 16-06-2004 à 23:24:54  profilanswer
 

vi je c... c $2 que j'ai affichée. cf mon reply ci dessus.
 
bon c pas grave au pire je l'appellerais sans passer par call_command mais j'aurais bien voulu savoir le pb quand meme :)
 
merci a vous deux en tt K.


---------------
http://chilax.com/forum/index.php?showforum=46 => !!!
n°505353
Klaimant
?
Posté le 16-06-2004 à 23:26:27  profilanswer
 

-u$USER -p$MYSQL_PASSWORD  
 
 
:D dit ya pas bcp d'espace dans ta commande la :D


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
n°505356
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 16-06-2004 à 23:28:42  profilanswer
 

et les variables c'est mieux comme ça

${variable}

n°505361
void_ppc
Posté le 16-06-2004 à 23:47:09  profilanswer
 

dans ton mot de passe tu as pas un caractère qui échappe quelque chose ? genre un \

n°505512
Nenelle
Josie Maran addicted
Posté le 17-06-2004 à 11:03:17  profilanswer
 

non mon mot de passe est un pass que avec des lettres et chiffres.
 
sinon je vais essayer avec les () quand je serais chez moi
 
merci.

n°505515
Klaimant
?
Posté le 17-06-2004 à 11:06:19  profilanswer
 

Nenelle a écrit :

non mon mot de passe est un pass que avec des lettres et chiffres.
 
sinon je vais essayer avec les () quand je serais chez moi
 
merci.


 
et ma remarque avec les variables collées aux flags style -uroot -pmotdepasse


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
n°505516
Nenelle
Josie Maran addicted
Posté le 17-06-2004 à 11:08:29  profilanswer
 

Klaimant a écrit :

et ma remarque avec les variables collées aux flags style -uroot -pmotdepasse


 
a priori ca ca pose pas probleme.


---------------
http://chilax.com/forum/index.php?showforum=46 => !!!
n°505517
Klaimant
?
Posté le 17-06-2004 à 11:09:45  profilanswer
 

Nenelle a écrit :

a priori ca ca pose pas probleme.


 
et a postériori ??


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
n°505560
nicephore1​7
Un cinglé parmis les fous
Posté le 17-06-2004 à 11:53:13  profilanswer
 

[quote  call_command "Sauvegarde des bases MySQL...                                          " "/usr/local/bin/mysqldump -u$USER -p$MYSQL_PASSWORD --all-databases\  
   > $DEST/all-databases.sql[quote]
 
 
Le \ ne met pas la zone?
Tu ne devrais pas le remplacer par \\  :??:


---------------
Mac Pro powered (sorry)
n°506435
void_ppc
Posté le 18-06-2004 à 15:07:54  profilanswer
 

nicephore17 a écrit :

[quote  call_command "Sauvegarde des bases MySQL...                                          " "/usr/local/bin/mysqldump -u$USER -p$MYSQL_PASSWORD --all-databases\  
   > $DEST/all-databases.sql[quote]
 
 
Le \ ne met pas la zone?
Tu ne devrais pas le remplacer par \\  :??:


 
c'est pour scinder une ligne en 2, normallement pas de problèmes

n°511380
Nenelle
Josie Maran addicted
Posté le 27-06-2004 à 23:49:44  profilanswer
 

up
 
j'ai tjs pas trouver le probleme, j'ai essayé avec les ${variable}... ca marche pas
 
y a bien qqn qui sait !

n°511384
Klaimant
?
Posté le 27-06-2004 à 23:50:42  profilanswer
 

et les espaces qu'il manque entre -u et $USER c normal ?


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
n°511397
Nenelle
Josie Maran addicted
Posté le 27-06-2004 à 23:59:49  profilanswer
 

vi c normal, et avec espace ca marche pas non pu :o

n°511403
Klaimant
?
Posté le 28-06-2004 à 00:02:37  profilanswer
 

c'est problèmatique tout ca :D


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs

  [script shell] petit pb

 

Sujets relatifs
passage de parametre a une fonction en shell ?Script Sauvegarde
[bash | awk | sed] ptit script[BASH][SCRIPT]lecture de plusieurs fichier en meme temps?
[tapeware] je cherche un petit tuto pour faire des backup plannifié[Shell] Supprimer les fichiers qui datent de plus de 60 jours
[shell]stack de commandes?[ Firefox ] Nouveau menu, passer l'url dans un script bash...
[Shell - Debian] LmSensorUN petit script shell ...
Plus de sujets relatifs à : [script shell] petit pb


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR