Shell + connexion à la base de données mysql

Résolu/Fermé
Lacapricorne Messages postés 17 Date d'inscription mardi 6 février 2018 Statut Membre Dernière intervention 8 février 2018 - Modifié le 7 févr. 2018 à 10:33
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 - 8 févr. 2018 à 19:47
Bonjour,

j'ai un scrpit shell qui se connecte sur la base de données mysql, puis exporte les données en fichier.csv. Mais voila, je bloque là dessus, je ne parvient pas à me connecter sur la base de données, et je n'arrive pas à localiser l'erreur.Est-ce que quelqu'un peut m'aider s'il vous plait?
Voici un morceau de ma code source
#!/bin/sh
currentTimeStartExp=`date +'20%y-%m-%d %H:%M:%S'`
#currentfile="/data/barring/cdr_rated_$1"+".csv"
#currentfile="/data/tmp/cdr_rated_$1.csv"
#currentfile="/DWH2017/SAVE/Reste/cdr_rated_$1"+".csv"
if [ $# -eq 0 ]
then
    currentfile="/archives/exportbase/cdr_rated_"`date +'20%y-%m-%d' -d ' day'`".csv"
    currentdate=`date +'20%y-%m-%d' -d ' day'`
else
    currentfile="/archives/exportbase/cdr_rated_$1.csv"
    currentdate=$1
fi
echo "Start EXPORT $currentfile at $currentTimeStartExp"
#Declaring mysql BIG5 DB connection
DBIG_DB_USER='root'
DBIG_DB_PASSWD=''
DBIG_DB_PORT=3306
DBIG_DB_HOST='192.168.56.102'
DBIG_DB_NAME='mabd'
echo "Start connexion"
#mysql command to connect to database prod
/usr/bin/mysql -u $DBIG_DB_USER -p $DBIG_DB_PASSWD -P $DBIG_DB_PORT -h $DBIG_DB_HOST -D $DBIG_DB_NAME <<EOF
select * from bdorange.client into outfile '$currentfile' fields terminated by '|';
EOF
#currentTimeEndExp=`date +'20%y-%m-%d %H:%M:%S'`
echo "connexion done and export done"



Le echo "start connexion" s'affiche bien sur l'ecran, mais le : echo :" connexion done and export done " ne s'affiche pas. Aidez moi s'il vous plait.
A voir également:

3 réponses

UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157
7 févr. 2018 à 10:47
Salut,

Ton précédent problème a été réglé ?

Si oui, la moindre des chose serait de le préciser et de clore le sujet, non ?

Sinon, rajoutes
set -xv
à ton script et poste le résultat ici.

0
Lacapricorne Messages postés 17 Date d'inscription mardi 6 février 2018 Statut Membre Dernière intervention 8 février 2018
7 févr. 2018 à 11:22
mon problème du sujet précédent a été reglé et dejà cloturé.Merci à toi.
rajouter set -xv?pourrait tu être plus précis s'il te plait?
0
UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157
7 févr. 2018 à 11:25
Après le shebang, tu rajoutes
set -xv
pour rendre ton script plus verbeux et essayer de voir où ça coince.

#!/bin/sh
set -xv
...
0
Lacapricorne Messages postés 17 Date d'inscription mardi 6 février 2018 Statut Membre Dernière intervention 8 février 2018
7 févr. 2018 à 11:40
voila ce qu'il en resulte:
[root@localhost log]# more moscript180207.log
currentTimeStartExp=`date +'20%y-%m-%d %H:%M:%S'`
date +'20%y-%m-%d %H:%M:%S'
++ date '+20%y-%m-%d %H:%M:%S'
+ currentTimeStartExp='2018-02-07 11:34:55'
#currentfile="/data/barring/cdr_rated_$1"+".csv"
#currentfile="/data/tmp/cdr_rated_$1.csv"
#currentfile="/DWH2017/SAVE/Reste/cdr_rated_$1"+".csv"
if [ $# -eq 0 ]
then
    currentfile="/archives/exportbase/cdr_rated_"`date +'20%y-%m-%d' -d ' day'`".csv"
    currentdate=`date +'20%y-%m-%d' -d ' day'`
else
    currentfile="/archives/exportbase/cdr_rated_$1.csv"
    currentdate=$1
fi
+ '[' 0 -eq 0 ']'
date +'20%y-%m-%d' -d ' day'
++ date +20%y-%m-%d -d ' day'
+ currentfile=/archives/exportbase/cdr_rated_2018-02-08.csv
date +'20%y-%m-%d' -d ' day'
++ date +20%y-%m-%d -d ' day'
+ currentdate=2018-02-08
echo "Start EXPORT $currentfile at $currentTimeStartExp"
+ echo 'Start EXPORT /archives/exportbase/cdr_rated_2018-02-08.csv at 2018-02-07 11:34:55'
Start EXPORT /archives/exportbase/cdr_rated_2018-02-08.csv at 2018-02-07 11:34:55
#Declaring mysql BIG5 DB connection
DBIG_DB_USER='root'
+ DBIG_DB_USER=root
DBIG_DB_PASSWD=''
+ DBIG_DB_PASSWD=
DBIG_DB_PORT=3306
+ DBIG_DB_PORT=3306
DBIG_DB_HOST='192.168.56.102'
+ DBIG_DB_HOST=192.168.56.102
DBIG_DB_NAME='mabase'
+ DBIG_DB_NAME=bdorange
echo "Start connexion"
+ echo 'Start connexion'
Start connexion
#mysql command to connect to database prod
/usr/bin/mysql -u '$DBIG_DB_USER' -p '$DBIG_DB_PASSWD' -P '$DBIG_DB_PORT' -h '$DBIG_DB_HOST' -D '$DBIG_DB_NAME' <<EOF
select * from mabase.client into outfile '$currentfile' fields terminated by '|';
EOF
--Plus--(63%)

0
UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157 > Lacapricorne Messages postés 17 Date d'inscription mardi 6 février 2018 Statut Membre Dernière intervention 8 février 2018
7 févr. 2018 à 11:43
Recommence avec cat à la place de more (qui n'affiche pas la totalité du log) ;-(
0
Lacapricorne Messages postés 17 Date d'inscription mardi 6 février 2018 Statut Membre Dernière intervention 8 février 2018
7 févr. 2018 à 11:56
avec cat ça donne ça :
[root@localhost log]# cat  nomscript180207.log
currentTimeStartExp=`date +'20%y-%m-%d %H:%M:%S'`
date +'20%y-%m-%d %H:%M:%S'
++ date '+20%y-%m-%d %H:%M:%S'
+ currentTimeStartExp='2018-02-07 11:34:55'
#currentfile="/data/barring/cdr_rated_$1"+".csv"
#currentfile="/data/tmp/cdr_rated_$1.csv"
#currentfile="/DWH2017/SAVE/Reste/cdr_rated_$1"+".csv"
if [ $# -eq 0 ]
then
    currentfile="/archives/exportbase/cdr_rated_"`date +'20%y-%m-%d' -d ' day'`"                                                                                        .csv"
    currentdate=`date +'20%y-%m-%d' -d ' day'`
else
    currentfile="/archives/exportbase/cdr_rated_$1.csv"
    currentdate=$1
fi
+ '[' 0 -eq 0 ']'
date +'20%y-%m-%d' -d ' day'
++ date +20%y-%m-%d -d ' day'
+ currentfile=/archives/exportbase/cdr_rated_2018-02-08.csv
date +'20%y-%m-%d' -d ' day'
++ date +20%y-%m-%d -d ' day'
+ currentdate=2018-02-08
echo "Start EXPORT $currentfile at $currentTimeStartExp"
+ echo 'Start EXPORT /archives/exportbase/cdr_rated_2018-02-08.csv at 2018-02-07                                                                                         11:34:55'
Start EXPORT /archives/exportbase/cdr_rated_2018-02-08.csv at 2018-02-07 11:34:5                                                                                        5
#Declaring mysql BIG5 DB connection
DBIG_DB_USER='root'
+ DBIG_DB_USER=root
DBIG_DB_PASSWD=''
+ DBIG_DB_PASSWD=
DBIG_DB_PORT=3306
+ DBIG_MASTER_DB_PORT=3306
DBIG_DB_HOST='192.168.56.102'
+ DBIG_DB_HOST=192.168.56.102
DBIG_DB_NAME='mabase'
+ DBIG_DB_NAME=mabase
echo "Start connexion"
+ echo 'Start connexion'
Start connexion
#mysql command to connect to database prod
/usr/bin/mysql -u '$DBIG_DB_USER' -p '$DBIG_DB_PASSWD' -P '$DBIG    _DB_PORT' -h '$DBIG_DB_HOST' -D '$DBIG_DB_NAME' <<EOF
select * from mabase.client into outfile '$currentfile' fields terminated by '                                                                                        |';
EOF
+ /usr/bin/mysql -u '$DBIG_DB_USER' -p '$DBIG_DB_PASSWD' -P '$DBIG                                                                                       _DB_PORT' -h '$DBIG_DB_HOST' -D '$DBIG_DB_NAME'
Unknown suffix '$' used for variable 'port' (value '$DBIG_DB_PORT')
/usr/bin/mysql: Error while setting value '$DBIG_DB_PORT' to 'port'
#currentTimeEndExp=`date +'20%y-%m-%d %H:%M:%S'`
echo "connexion done"
+ echo 'connexion done'
connexion done
if [ -f "$currentfile" ]
then
        currentfilegz="$currentfile.gz"
        gzip $currentfile
        if [ -f "$currentfilegz" ]
        then

                sshpass -p "rasoamanarivo" ssh root@192.168.56.102
                <<EOF
                sshpass -p "rasoamanarivo" scp -p -r root@192.168.56.103:$curren                                                                                        tfilegz /DWHFB/archivecsvprod
EOF
                echo  "FTP :$currentfilegz OK ."
                currentTimeEndExp=`date +'20%y-%m-%d %H:%M:%S'`
                echo "End EXPORT $currentfilegz at $currentTimeEndExp"
                rm -rf $currentfilegz
        fi

fi
+ '[' -f /archives/exportbase/cdr_rated_2018-02-08.csv ']'

[root@localhost log]#

0
UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157 > Lacapricorne Messages postés 17 Date d'inscription mardi 6 février 2018 Statut Membre Dernière intervention 8 février 2018
7 févr. 2018 à 12:01
+ /usr/bin/mysql -u '$DBIG_DB_USER' -p '$DBIG_DB_PASSWD' -P '$DBIG                                                                                       _DB_PORT' -h '$DBIG_DB_HOST' -D '$DBIG_DB_NAME'
Unknown suffix '$' used for variable 'port' (value '$DBIG_DB_PORT')
/usr/bin/mysql: Error while setting value '$DBIG_DB_PORT' to 'port'

Enlève l'espace dans
-P '$DBIG _DB_PORT'
;-(
0
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
Modifié le 7 févr. 2018 à 21:34
Hello,

Dans ton code, le mot de passe est vide. Si c'est le cas, enléve le
-p $DBIG_DB_PASSWD
. Sinon ton script va s'attendre à un mdp en entré.

Sinon indique le mot de passe dans la variable en haut.

N'utilise pas de simple quote, comme l'a dit UnGnU, si tu veux que ta variable soit interpreter comme une variable, et non comme une chaine de caractére, utilise les doubles quote -> https://forums.commentcamarche.net/forum/affich-35188329-shell-connexion-a-la-base-de-donnees-mysql#18

pour ce qui est de la DB, je ne met pas de -D généralement. Je fais appel aux bdd avec BDD.TABLE (ex :
users.passwords
). C'est plus propre de gérer ça au niveau de ta requéte :)

A plus :)

Edit : et il y a ça aussi ->

+ DBIG_DB_NAME=bdorange
select * from mabase.client

edit edit : et du coup, plutot que de te dire que la base n'existe pas (ce qui pourait être une faille), il te jette

0
Lacapricorne Messages postés 17 Date d'inscription mardi 6 février 2018 Statut Membre Dernière intervention 8 février 2018
8 févr. 2018 à 09:07
cela a fonctionner, je vous remercie infiniment...
0
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
8 févr. 2018 à 19:47
np
0