Aller au contenu

[R


Bishlouk

Messages recommandés

Bonjour,

Récent acquéreur d'un DS411+II, je suis un débutant en ligne de commande Linux. J'ai fait pas mal de recherches sur le net (et sur nas-forum en particulier), mais là je calle sur mon script et je dois bien avouer que l'aide de la communauté me serait bien utile. Merci d'avance :)

Le but de mon script est de télécharger chaque nuit des fichiers d'un site FTP distant, que chaque étape soit loggée dans un fichier txt sur le syno, et que je reçoive un email quand le transfert est terminé.

A cette fin j'ai donc installé ipkg, lftp (transfert ftp), nail (envoi de mails) et screen.

Mon syno tourne avec le DSM 4.0.2228 (la dernière version en date), busybox v1.16.1

Premièrement, voici mon script:

#!/bin/sh

################################################

##### Mirroring offsite fichiers avec lftp

################################################

######################################################################################

# debut shell

echo "+-- Debut de la Sauvegarde du $(date) ---" >> /volume1/Scripts/LogFTP.txt

# commande de copie miroir ftp vers local

/opt/bin/lftp ftp://LOGIN:PASSWORD@ftp.domaine.com -e "set net:max-retries 3; set file:charset utf8; set ftp:charset utf8; mirror -e ${1} /_RepertoireDistant/ /volume1/RepertoireLocal/ ; quit" >> /volume1/Scripts/LogFTP.txt

# résultat de la commande - 0 : ok

res=$?

echo "Résultat de la sauvegarde du ftp vers NAS Syno : "${res} >> /volume1/Scripts/LogFTP.txt

# fin shell

echo "--- Fin Sauvegarde $(date) ---" >> /volume1/Scripts/LogFTP.txt

if [ ${res} -eq 0 ]

then echo "Download FTP vers NAS Syno OK" | /opt/bin/nail -s "Download FTP vers NAS Syno OK" -a /volume1/Scripts/LogFTP.txt nom.prenom@domaine.com

else echo "ERREUR Download FTP vers NAS Syno" | /opt/bin/nail -s "ERREUR Download FTP vers NAS Syno" -a /volume1/Scripts/LogFTP.txt nom.prenom@domaine.com

fi

######################################################################################

exit $res

Quand je veux tester mon script via Putty (loggé en root) avec simplement /chemin/script.sh il me répond -ash: script.sh: not found (aucun indice que ce qu'il n'a pas trouvé). Idem quand j'essaie script.sh directement dans le dossier où il se trouve (ce n'est donc pas un problème de chemin).

Quand je lance le script avec sh -x /chemin/script.sh (pour le débuggage) tout semble OK (un signe + devant chaque ligne).

Quand je lance le script avec sh /chemin/script.sh le fichier log LogFTP se crée, mais son nom n'est pas LogFTP.txt mais LogFTP.txt (avec un carré blanc à la fin du .txt). Les deux lignes echo apparaissent bien dans ce fichier txt, mais rien concernant la transfert ftp. D'ailleurs aucun transfert ftp ne se passe, et je ne reçois aucun email.

Pourtant, quand je lance dans la fenêtre Putty chaque ligne séparément, chaque ligne fonctionne bien:

echo "+-- Debut de la Sauvegarde du $(date) ---" >> /volume1/Scripts/LogFTP.txt --> le fichier LogFTP.txt se crée correctement (avec le bonne extension de fichier .txt).

/opt/bin/lftp ftp://LOGIN:PASSWORD@ftp.domaine.com -e "set net:max-retries 3; set file:charset utf8; set ftp:charset utf8; mirror -e ${1} /_RepertoireDistant/ /volume1/RepertoireLocal/ ; quit" >> /volume1/Scripts/LogFTP.txt --> Le transfert FTP se passe correctement et le fichier log est mis à jour.

echo "Résultat de la sauvegarde du ftp vers NAS Syno : "${res} >> /volume1/Scripts/LogFTP.txt --> le fichier LogFTP.txt se met à jour correctement.

echo "Download FTP vers NAS Syno OK" | /opt/bin/nail -s "Download FTP vers NAS Syno OK" -a /volume1/Scripts/LogFTP.txt nom.prenom@domaine.com --> je reçois bien l'email avec le fichier log en pièce jointe.

J'ai essayé de changer #!/bin/sh en#!/bin/ash, cela n'a rien changé.

J'ai octroyé les droits d'exécution au script via chmod +x, cela n'a rien changé non plus.

Il doit donc y avoir un bug dans mon code, mais je n'arrive pas à mettre la main dessus :unsure:

Evidemment, j'aimerais être certain que le script fonctionne convenablement en le lançant manuellement avant de m'attaquer à la partie crontab pour le faire tourner chaque jour...

Merci aux habitués du forum de me venir en aide, ce serait très sympa :D

Lien vers le commentaire
Partager sur d’autres sites

Ha ben il suffisait que je poste ma question pour finalement trouver la réponse grâce à un autre post sur ce forum:

En fait j'avais édité mon script sous Windows et copié sur le syno. il y avait donc des ^M (invisibles sous Windows) à la fin de chaque ligne du script :huh:

En éditant le script avec vi j'ai pu voir ces ^M et les supprimer, tout roule maintenant :lol:

Lien vers le commentaire
Partager sur d’autres sites

Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.