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

 


Dernière réponse
Sujet : [script shell] petit pb
Klaimant c'est problèmatique tout ca :D

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Klaimant c'est problèmatique tout ca :D
Nenelle vi c normal, et avec espace ca marche pas non pu :o
Klaimant et les espaces qu'il manque entre -u et $USER c normal ?
Nenelle up
 
j'ai tjs pas trouver le probleme, j'ai essayé avec les ${variable}... ca marche pas
 
y a bien qqn qui sait !
void_ppc

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

nicephore17 [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 \\  :??:
Klaimant

Nenelle a écrit :

a priori ca ca pose pas probleme.


 
et a postériori ??

Nenelle

Klaimant a écrit :

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


 
a priori ca ca pose pas probleme.

Klaimant

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

Nenelle 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.
void_ppc dans ton mot de passe tu as pas un caractère qui échappe quelque chose ? genre un \
black_lord et les variables c'est mieux comme ça

${variable}

Klaimant -u$USER -p$MYSQL_PASSWORD  
 
 
:D dit ya pas bcp d'espace dans ta commande la :D
Nenelle 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.
Klaimant

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

Nenelle

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 ]

Nenelle

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 ?

void_ppc essaye de faire un echo $1 dans call_command() pour voir si il manque pas des morceaux
Nenelle j'ai affiché $2 dans call_command et il est comme il faut :(
Klaimant la je sais pas, je m'en sert jamais de call_command :/
Nenelle 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 :/
Klaimant si tu fais sans passer par call_command ca marche pas non plus ??
Nenelle elle ne l'est pas en vrai, c'est en faisant un c/c depuis emacs.
Klaimant pk ta ligne de commande mysql est séparée en deux ?
Nenelle 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 ?


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