[script shell] petit pb

petit pb [script shell] - Linux et OS Alternatifs

Marsh Posté le 16-06-2004 à 22:52:31    

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 => !!!
Reply

Marsh Posté le 16-06-2004 à 22:52:31   

Reply

Marsh Posté le 16-06-2004 à 22:54:50    

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 !!!
Reply

Marsh Posté le 16-06-2004 à 23:00:09    

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


---------------
http://chilax.com/forum/index.php?showforum=46 => !!!
Reply

Marsh Posté le 16-06-2004 à 23:03:36    

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 !!!
Reply

Marsh Posté le 16-06-2004 à 23:09:26    

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 => !!!
Reply

Marsh Posté le 16-06-2004 à 23:10:29    

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 !!!
Reply

Marsh Posté le 16-06-2004 à 23:11:02    

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


---------------
http://chilax.com/forum/index.php?showforum=46 => !!!
Reply

Marsh Posté le 16-06-2004 à 23:11:15    

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

Reply

Marsh Posté le 16-06-2004 à 23:12:02    

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 => !!!
Reply

Marsh Posté le 16-06-2004 à 23:13:38    

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 => !!!
Reply

Marsh Posté le 16-06-2004 à 23:13:38   

Reply

Marsh Posté le 16-06-2004 à 23:15:19    

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 !!!
Reply

Marsh Posté le 16-06-2004 à 23:24:54    

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 => !!!
Reply

Marsh Posté le 16-06-2004 à 23:26:27    

-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 !!!
Reply

Marsh Posté le 16-06-2004 à 23:28:42    

et les variables c'est mieux comme ça

${variable}

Reply

Marsh Posté le 16-06-2004 à 23:47:09    

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

Reply

Marsh Posté le 17-06-2004 à 11:03:17    

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.

Reply

Marsh Posté le 17-06-2004 à 11:06:19    

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 !!!
Reply

Marsh Posté le 17-06-2004 à 11:08:29    

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 => !!!
Reply

Marsh Posté le 17-06-2004 à 11:09:45    

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 !!!
Reply

Marsh Posté le 17-06-2004 à 11:53:13    

[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)
Reply

Marsh Posté le 18-06-2004 à 15:07:54    

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

Reply

Marsh Posté le 27-06-2004 à 23:49:44    

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

Reply

Marsh Posté le 27-06-2004 à 23:50:42    

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 !!!
Reply

Marsh Posté le 27-06-2004 à 23:59:49    

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

Reply

Marsh Posté le 28-06-2004 à 00:02:37    

c'est problèmatique tout ca :D


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed