Menu

Erreur scrpit shell : fin de fichier prématuré. [Résolu]

Lacapricorne 17 Messages postés mardi 6 février 2018Date d'inscription 8 février 2018 Dernière intervention - 6 févr. 2018 à 11:24 - Dernière réponse : Lacapricorne 17 Messages postés mardi 6 février 2018Date d'inscription 8 février 2018 Dernière intervention
- 7 févr. 2018 à 11:11
Bonjour,
Je suis assez débutante en script shell.
J'ai un script shell qui, d'abord exporte les données de la base de données mysql vers fichier.csv puis comprèsse ce fichier et enfin l'envoi vers un autre serveur dont l'adresse IP est 192.168.56.103.

Voici mon code :



#!/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/export_base/export_"`date +'20%y-%m-%d' -d '-1 day'`".csv"
    currentdate=`date +'20%y-%m-%d' -d '-1 day'`
else
    currentfile="/archives/export_base/export_$1.csv"
    currentdate=$1
fi
echo "Start EXPORT $currentfile at $currentTimeStartExp"
#Declaring mysql BIG5 DB connection 
DBIG_MASTER_DB_USER='root'
DBIG_MASTER_DB_PASSWD=''
DBIG_MASTER_DB_PORT=3306
DBIG_MASTER_DB_HOST='192.168.56.102'
DBIG_MASTER_DB_NAME='bdorange'

#mysql command to connect to database prod
/usr/bin/mysql -u$DBIG_MASTER_DB_USER -p$DBIG_MASTER_DB_PASSWD -P$DBIG_MASTER_DB_PORT -h$DBIG_MASTER_DB_HOST -D$DBIG_MASTER_DB_NAME <<EOF
select * from $DBIG_MASTER_DB_NAME.affecter where iddate between '$currentdate' and '$currentdate 23:59:59' into outfile '$currentfile' fields terminated by '|';
EOF
#currentTimeEndExp=`date +'20%y-%m-%d %H:%M:%S'`
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:$currentfilegz /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





Mais voilà, quand j’exécute mon script il retourne toujours l'erreur : " ligne44: Erreur de syntaxe : fin de fichier prématurée"
J'essai de trouver ou se trouve exactement l'erreur mais je n'y arrive pas. Est ce que quelqu'un peut m'aider s'il vous plait, je sais plus du tout quoi faire.Merci beaucoup.
Afficher la suite 

Votre réponse

9 réponses

UnGnU 827 Messages postés lundi 2 mai 2016Date d'inscription 23 mai 2018 Dernière intervention - 6 févr. 2018 à 11:49
0
Utile
Salut,

Le script a été écrit sous GNU/Linux ou sous Windows ?

UnGnU 827 Messages postés lundi 2 mai 2016Date d'inscription 23 mai 2018 Dernière intervention > Lacapricorne 17 Messages postés mardi 6 février 2018Date d'inscription 8 février 2018 Dernière intervention - 6 févr. 2018 à 12:23
T'es sûr qu'il a été écrit sous Gnu/linux ???
Toutes les fins de lignes sont au format Micro$oft (^M$) ;-((
Lacapricorne 17 Messages postés mardi 6 février 2018Date d'inscription 8 février 2018 Dernière intervention - 6 févr. 2018 à 12:38
en fait,j'ai procédé comme ceci : j'ai édité script avec notepad++ de Windows, avant de le recopié dans le répertoire de GNU/Linux, puis je l'ai exécuté. Il fallait pas faire comme ça?
UnGnU 827 Messages postés lundi 2 mai 2016Date d'inscription 23 mai 2018 Dernière intervention > Lacapricorne 17 Messages postés mardi 6 février 2018Date d'inscription 8 février 2018 Dernière intervention - 6 févr. 2018 à 13:30
Ben non ;-((

Windows, MacOS et Gnu/Linux ne formatent pas leur fin de ligne de la même façon, donc il est préférable d'éditer les fichiers de scripts, sur le système où ils sont supposés tourner, et dans le cas contraire, il faut choisir le format dans les préférences de l'éditeur, c'est le cas pour NotePad.

Là tu peux aussi convertir le fichier avec la commande (si installée)
dos2unix
.
UnGnU 827 Messages postés lundi 2 mai 2016Date d'inscription 23 mai 2018 Dernière intervention > Lacapricorne 17 Messages postés mardi 6 février 2018Date d'inscription 8 février 2018 Dernière intervention - 6 févr. 2018 à 13:32
Ah, et aussi, la prochaine fois où on te demande d'emblée où a été créé le script, essaie de répondre correctement du 1er coup ;-(
Lacapricorne 17 Messages postés mardi 6 février 2018Date d'inscription 8 février 2018 Dernière intervention - 7 févr. 2018 à 11:11
ça a marcher, merci beaucoup!
Commenter la réponse de UnGnU