Bishlouk Posté(e) le 2 juin 2012 Partager Posté(e) le 2 juin 2012 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 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bishlouk Posté(e) le 2 juin 2012 Auteur Partager Posté(e) le 2 juin 2012 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 En éditant le script avec vi j'ai pu voir ces ^M et les supprimer, tout roule maintenant Lien vers le commentaire Partager sur d’autres sites More sharing options...
tonymans72 Posté(e) le 4 juin 2012 Partager Posté(e) le 4 juin 2012 vi permet souvent de corriger les erreurs des éditeurs de texte Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés