Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1657 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  script de download ftp

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

script de download ftp

n°2040432
krifur
Posté le 07-12-2010 à 09:59:37  profilanswer
 

Bonjour,
J'ai réalisé un script bash pour recuperer une archive sur un site distant, si l'archive est telecharger je lance un script php (via curl) pour faire un traitement complexe dessus (bdd..)
le code marche a peu pres mais
jai plusieurs doutes sur son comportement :

 

-Est ce que le script attends la fin du telechargement ftp pour lancer la suite du code (if/else) ?Ou alors il lance le download mais continue ensuite dans le script
-Comment ce fait t il que je ne recoive jamais de mail de debug : resultat du Curl de meme que de fin de script ?
-Quel est la meilleure facon d interdire le script si l'archive a déja ete telecharger ? Actuellement le script est lancé via cron toutes les heures (entre 5 et 8) et du coup il peux arriver qu il refasse tous ce traitement...
y a t il une solution pour le fixer ça avec cron ou alors il faut modifier le script (mettre le test de présence de fichier d abord ?) ?

Code :
  1. cd /my_rep
  2. HOST='domaine.com'
  3. PORT='21'
  4. USER='admin'
  5. PASSWD='pass'
  6. jour=$(date "+%Y%m%d" )
  7. FILE="file_"$jour".txt";
  8. ftp -i -n $HOST $PORT <<EOF
  9. quote USER $USER
  10. quote PASS $PASSWD
  11. cd firstlevel
  12. cd end
  13. get $FILE
  14. quit
  15. EOF
  16. if test -f $FILE
  17.     then
  18.     CurlRes="$(curl "http://doma.com/myfile.php" )"
  19.    
  20.     echo debug  CURL : $CurlRes | mail -s "debug"  krifur@krifur.com
  21.     else
  22.     echo Tentative echoue sur : $FILE | mail -s "pas de fichier"  krifur@krifur.com
  23.     fi
  24.    
  25. echo fin script download | mail -s "fin du script download"   krifur@krifur.com
 

merci !


Message édité par krifur le 07-12-2010 à 10:01:09
mood
Publicité
Posté le 07-12-2010 à 09:59:37  profilanswer
 

n°2040454
olivthill
Posté le 07-12-2010 à 11:36:29  profilanswer
 

Citation :

quit

Au lieu de "quit", j'ai l'habitude d'écrire "bye" ou "by". Il me semble que "quit" ne marche pas avec certains FTP.
 

Citation :

-Est ce que le script attends la fin du telechargement ftp pour lancer la suite du code (if/else) ?

D'après mon expérience, il attend, mais j'écrivais "by", et je n'avais pas tout à fait le même environnement.
 

Citation :

-Comment ce fait t il que je ne recoive jamais de mail de debug


Il faudrait tester l'envoie de mail seul, sans tout ce qui précède. Peut-être qu'il faut préciser le chemin du logiciel mail, ou peut-être qu'il y a un autre problème.
Pour tester les mails, j'ai l'habitude de taper la commande :  

echo "test" |/bin/mailx -v -s "Test" moi@chezmoi.com

Le -v permet d'avoir des renseignements sur les problèmes éventuels.

n°2040457
krifur
Posté le 07-12-2010 à 11:46:36  profilanswer
 

Pour les mails j'ai déjà bien tester en ligne de commande (et j'en reçoit certains provenant d'autres script mais ayant la même déclaration) et cela marche bien...
Merci pour les précisions je vais avancer le truc...

n°2040688
krifur
Posté le 08-12-2010 à 10:26:37  profilanswer
 

Up pour la question sur le cron,
Mon script tourne 4 fois entre 5h et 8h, j'aimerais qu'il ne s'exécute pas si il vient de fonctionner (par exemple il marche a 6h, du coup il ne doit pas se reexecuter a 7h et 8h)
 
Quel est la meilleur technique pour faire ca ?
 
fichier de log ?

n°2040934
tuxerman12
Posté le 08-12-2010 à 19:40:14  profilanswer
 

Tu devrais décomposer ton script en 2 connexions, ce serait plus souple.
Une connexion ftp pour récupérer le listing des fichiers, après tu testes la présence de celui que tu veux dans la liste, s'il est présent tu lances une connexion avec un get, sinon d'autres trucs.

n°2041037
Nukolau
Posté le 09-12-2010 à 14:11:42  profilanswer
 

Dans la mesure du possible, il faut éviter les connexions multiples, et regrouper un maximum au contraire !
Les ouvertures/fermetures de connexion prennent toujours du temps et quand on fait des traitements de masse c'est extrêmement pénalisant. Visiblement il ne fait pas de traitement de masse, donc c'est pas grave, mais ça reste à mon sens une bonne habitude à prendre.
 
Pour bloquer l'exécution du script, il y a plusieurs solutions. La plus simple je pense consisterait à tester si le fichier $FILE est déjà présent en local avant de faire le ftp, et de mettre directement un exit 0 si il est présent.
Une autre méthode pourrait être de passer par un système de flag, mais c'est un peu pus lourd pour pas grand chose...


Message édité par Nukolau le 09-12-2010 à 14:12:18
n°2041658
tuxerman12
Posté le 12-12-2010 à 19:57:35  profilanswer
 

Perso je ne trouve pas plus crade d'essayer de télécharger un truc qui n'existe pas que de faire 2 connexions, une pour un ls et une seconde pour télécharger si le fichier existe.

 

Sinon pour le cron, tu peux effectivement essayer de tester un truc créé par une exécution précédente réussie, soit tu incules ce test en début de script script, soit dans la crontab avant d'exécuter le script, et tu l'enchaines avec un && ou || .


Message édité par tuxerman12 le 12-12-2010 à 19:58:17
n°2042051
Nukolau
Posté le 14-12-2010 à 15:32:38  profilanswer
 

Ben ... perso quand je traite 6000 serveurs, dont certains ont un ping élevé car placés à l'autre bout du monde, un ssh de moins par serveur, ca amène général a un gain plus proche de l'heure que de la seconde...

 

C'est pareil pour un script d'insert sql. si j'ai 10000 insert a faire, je vais les faire d'un bloc, pas ouvrir/fermer 10000 fois l'accès à la base de données.

 

Et puis faire un scp et tester après le code retour, je trouve pas ça spécialement crade, en tout cas pas plus que de faire un ls d'un fichier qui n'existe pas.

 

Tout se discute c'est sur ;)


Message édité par Nukolau le 14-12-2010 à 15:33:21

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  script de download ftp

 

Sujets relatifs
script javascriptScript pour rotation de bannière
envoyer lien download ds mailLangage de script
Script pour visualiser base de donnée SQL serverAide script php + mysql
cours programmation script sous Unity 3DComment faire un Script de download d'une page precise ?
Script php donnant accès à un download , à combiner avec un htaccess[ PHP ] Un script de gestion de download...
Plus de sujets relatifs à : script de download ftp


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR