Dans le cadre d'un projet, je dois transférer plusieurs fichiers par SFTP.
Voila la fonction que j'ai crée (plus ou moins bien faite, n'étant pas expert en shell... )
Je développe en ksh
Et donc à chaque fichier de la liste, j'appel cette fonction. Ce qui veut dire une ouverture de session pour chaque ce qui n'est vraiment pas terrible je vous l'accorde.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 sftpUploadFile() { if [ $# -ne 4 ]; then echo "sftpUploadFile() : Appel incorrect" echo "usage : sftpUploadFile <rmt_host> <rmt_dir> <file> <log_file>" else RMT_HOST=${1} RMT_DIR=${2} FICHIER=${3} FIC_LOG=${4} fi sftp ${RMT_HOST} 2>>${FIC_LOG} >>${FIC_LOG} <<END_SFTP_SESSION cd ${RMT_DIR} mput ${FICHIER} END_SFTP_SESSION CR=$? if [ ! ${CR} -eq ${RC_OK} ]; then doLog "${szMsgERROR}" "La connexion au serveur distant a échouée (CR : $CR)" finScriptError fi }
J'essaie donc de trouver le bout de code qui me manque pour boucler sur une liste de fichiers une fois la session ouverte :
Un peu comme ça :
Mais ca ne fonctionne pas, puisque c'est le shell distant (sftp) qui essaie d'interpréter ces commandes, ce qui est compréhensible.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 sftp ${RMT_HOST} 2>>${FIC_LOG} >>${FIC_LOG} <<END_SFTP_SESSION cd ${RMT_DIR} cat ${LIST} | while read ${FICHIER} do mput ${FICHIER} done END_SFTP_SESSION
Alors comment faire ?
Avis aux experts (ou pas) que je remercie par avance![]()
Partager