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

Signaler
Messages postés
17
Date d'inscription
mardi 6 février 2018
Statut
Membre
Dernière intervention
8 février 2018
-
Messages postés
17
Date d'inscription
mardi 6 février 2018
Statut
Membre
Dernière intervention
8 février 2018
-
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.

1 réponse

Messages postés
1151
Date d'inscription
lundi 2 mai 2016
Statut
Membre
Dernière intervention
17 mai 2019
142
Salut,

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

Messages postés
1151
Date d'inscription
lundi 2 mai 2016
Statut
Membre
Dernière intervention
17 mai 2019
142 >
Messages postés
17
Date d'inscription
mardi 6 février 2018
Statut
Membre
Dernière intervention
8 février 2018

T'es sûr qu'il a été écrit sous Gnu/linux ???
Toutes les fins de lignes sont au format Micro$oft (^M$) ;-((
Messages postés
17
Date d'inscription
mardi 6 février 2018
Statut
Membre
Dernière intervention
8 février 2018

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?
Messages postés
1151
Date d'inscription
lundi 2 mai 2016
Statut
Membre
Dernière intervention
17 mai 2019
142 >
Messages postés
17
Date d'inscription
mardi 6 février 2018
Statut
Membre
Dernière intervention
8 février 2018

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
.
Messages postés
1151
Date d'inscription
lundi 2 mai 2016
Statut
Membre
Dernière intervention
17 mai 2019
142 >
Messages postés
17
Date d'inscription
mardi 6 février 2018
Statut
Membre
Dernière intervention
8 février 2018

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 ;-(
Messages postés
17
Date d'inscription
mardi 6 février 2018
Statut
Membre
Dernière intervention
8 février 2018

ça a marcher, merci beaucoup!