# Script ftp qui rename apres copie

**URL:** <https://www.debian-fr.org/t/script-ftp-qui-rename-apres-copie/64728>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 9:15 UTC](https://www.debian-fr.org/t/script-ftp-qui-rename-apres-copie/64728 "2016-02-21T21:15:10Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![jimbo](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/j/d78d45/32.png) [@jimbo](https://www.debian-fr.org/u/jimbo)\
**Post date:** [Février 21, 2016, 9:15 UTC](https://www.debian-fr.org/t/script-ftp-qui-rename-apres-copie/64728/1 "2016-02-21T21:15:10Z")

</div>

Salut,

j’aimerais créer un script pour pouvoir le lancer avec un cron qui une fois le get files executé renome les fichiers avec l’extension .bak.

c’est possible via commande ftp directement ?

```auto
#!/bin/bash
HOST=xxx.YYY.ZZZ.EEE 
USER=ftpuser             
PASS=password       

#-i turns off interactive prompting. 
#-n Restrains FTP from attempting the auto-login feature. 
#-v enables verbose and progress. 

ftp -inv $HOST << EOF
user $USER $PASS
cd /path/to/file
mget *.csv

# End FTP Connection
bye

EOF

```

j’ai 2 questions 😊

comment je fais pour qu’il copie les \*.CSV et \*.csv ?  
comment je fais pour qu’il m’ajoute l’extension .bak après la copie aux fichiers copiés comme ça je n’efface rien en cas de soucis et au prochain passage du script il ne me les reprend pas.

Merci de m’aider 😛

---

<div class="post-metadata">

**Author:** ![flavien](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/f475e1/32.png) [@flavien](https://www.debian-fr.org/u/flavien)\
**Post date:** [Février 21, 2016, 9:15 UTC](https://www.debian-fr.org/t/script-ftp-qui-rename-apres-copie/64728/2 "2016-02-21T21:15:18Z")

</div>

Salut,

au lieu du mget, je te propose une boucle for pour faire le traitement :

```auto
for f in $(ls)
do
  if [$(echo $f|egrep '\.(csv|CSV)$')]
  then
    mget $f
    mv $f $f.bak
  fi
done
```

Le $ dans le egrep signifie qu’il ne doit pas y avoir de caractères après .csv ou .CSV, cela va donc exclure les .csv.bak

---

<div class="post-metadata">

**Author:** ![jimbo](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/j/d78d45/32.png) [@jimbo](https://www.debian-fr.org/u/jimbo)\
**Post date:** [Février 21, 2016, 9:15 UTC](https://www.debian-fr.org/t/script-ftp-qui-rename-apres-copie/64728/3 "2016-02-21T21:15:33Z")

</div>

Merci,

voila ce que j’ai mis :

```auto
#!/bin/bash
HOST=XXX.YYY.ZZZ.OOO
USERFTP=user
PASSWORD=xxx
PORT=2222
cd /home/sysadmin/testftp

ftp -inv $HOST 2222 <<EOF
quote USER $USERFTP
quote PASS $PASSWORD
cd /home/ftp/

for f in $(ls) do
  if [$(echo $f|egrep '\.(csv|CSV)$')]
  then
    mget $f
    mv $f $f.bak
  fi
done
```

il n’aime pas trop :

`Remote system type is UNIX.
Using binary mode to transfer files.
331 Password required for useripad
230 User useripad logged in
250 CWD command successful
We only support non-print format, sorry.
?Invalid command
?Invalid command
(remote-files) Illegal PORT command
ftp: bind: Address already in use
Illegal PORT command
can't find list of remote files, oops
?Invalid command
?Invalid command
221 Goodbye.
`

je vais devoir changer pour “expect” je pense

😊

---

<div class="post-metadata">

**Author:** ![flavien](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/f475e1/32.png) [@flavien](https://www.debian-fr.org/u/flavien)\
**Post date:** [Février 21, 2016, 9:15 UTC](https://www.debian-fr.org/t/script-ftp-qui-rename-apres-copie/64728/4 "2016-02-21T21:15:33Z")

</div>

Effectivement, je n’avais pas fait attention au fait que les commandes qui suivent la commande ftp doivent être des commandes reconnues par ftp.  
Après une petite recherche, tu peux t’inspirer de [ceci](http://www.debian-fr.org/petit-script-bash-pour-ftp-t36375.html#p366934)

---

<div class="post-metadata">

**Author:** ![jimbo](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/j/d78d45/32.png) [@jimbo](https://www.debian-fr.org/u/jimbo)\
**Post date:** [Février 21, 2016, 9:15 UTC](https://www.debian-fr.org/t/script-ftp-qui-rename-apres-copie/64728/5 "2016-02-21T21:15:48Z")

</div>

je vais essayer avec curlftpfs je pourrai exécuter ta boucle “for” je pense.

[code]#!/bin/bash  
curlftpfs user@ftp.server.com:2222//home/ftp /mnt/ftp

for f in $(ls) do  
if [$(echo $f|egrep ‘.(csv|CSV)$’)]  
then  
scp $f scp -i ~/.ssh/id\_rsa [sysadmin@10.100.0.100](mailto:sysadmin@10.100.0.100):/home/ipad  
mv $f $f.bak  
fi  
fusermount -u /mnt/ftp  
done[/code]
