Problème script sftp

Problème script sftp - Shell/Batch - Programmation

Marsh Posté le 09-09-2008 à 11:48:54    

Salut,
 
J'ai un petit problème avec un script sftp, lorsque je fais :
 

Code :
  1. /usr/bin/sftp toto@host <<END_SCRIPT
  2.         put file.txt
  3.         bye
  4.         END_SCRIPT


 
Ça fonctionne bien mais quand je rajoute le même code dans un while :
 

Code :
  1. cat $toto | while read line
  2. do
  3.         /usr/bin/sftp toto@host <<END_SCRIPT
  4.         put $line
  5.         bye
  6.         END_SCRIPT
  7. done


 
 
Il me sort un syntax error at line 16 : `<<' unmatched, je ne comprends pas  :heink:
 
 
Merci pour votre aide.

Reply

Marsh Posté le 09-09-2008 à 11:48:54   

Reply

Marsh Posté le 10-09-2008 à 09:40:02    

:hello:

Reply

Marsh Posté le 10-09-2008 à 16:28:58    

Bon finalement je n'ai pas trouvé de solutions à ce problème précisément mais j'ai trouvé une autre façon d'utiliser sftp pour transférer une liste de fichiers.
 
Dans mon script je créé un fichier temporaire, de cette façon : echo "ma commande" >> fichier_tmp, dans lequel je mets les commandes à exécuter.
 
Ca me donne un fichier de ce style au final :
 

Code :
  1. put file1
  2. put file2
  3. put file3
  4. bye


 
Et au final je n'ai plus besoin d'appeler sftp dans une boucle, je ne l'appel qu'une seule fois dans mon script, de cette façon :
 

Code :
  1. sftp user@hostname < file_tmp


 
Ou, autre façon de faire :
 

Code :
  1. sftp -b file_tmp user@hostname


 
 
Voila pour ceux à qui ça servira peut-être ! Bye bye

Reply

Marsh Posté le 28-09-2009 à 17:19:21    

Je déterre ce topic pour expliquer le problème :  
 

Citation :

Code :
 
   1. cat $toto | while read line
   2. do
   3.         /usr/bin/sftp toto@host <<END_SCRIPT
   4.         put $line
   5.         bye
   6.         END_SCRIPT
   7. done


 
Ton END_SCRIPT étant indenté, il ne le trouve pas et parcourt le script jusqu'au bout.
 
Il aurait fallu que ton while ressemble à ça :
 

Citation :

Code :
 
   1. cat $toto | while read line
   2. do
   3.         /usr/bin/sftp toto@host <<END_SCRIPT
   4.         put $line
   5.         bye
   6. END_SCRIPT
   7. done

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed