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 ?
#!/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.
#!/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.
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
for f in $(ls) do
if [ $(echo $f|egrep ‘.(csv|CSV)$’) ]
then
scp $f scp -i ~/.ssh/id_rsa sysadmin@10.100.0.100:/home/ipad
mv $f $f.bak
fi
fusermount -u /mnt/ftp
done[/code]