OVH Cloud OVH Cloud

[FTP] Comment effacer un fichier ?

12 réponses
Avatar
julien.gautier
Bonjour,


j'aimerais pouvoir effacer un fichier se trouvant sur un serveur FTP
auquel j'ai accès.

Je pourrais utiliser tout simplement les commandes FTP, mais je souhaite
le faire de manière non-interactive : j'ai regardé ce que proposent
Wget, Curl, ncftpput, mais n'ai pas trouvé de fonction de ce type.

Que me suggérez-vous ?

Merci d'avance.

10 réponses

1 2
Avatar
patpro
In article <1g5qyzl.1ln2m8336ss6N%,
(Julien Gautier) wrote:


Je pourrais utiliser tout simplement les commandes FTP, mais je souhaite
le faire de manière non-interactive : j'ai regardé ce que proposent
Wget, Curl, ncftpput, mais n'ai pas trouvé de fonction de ce type.

Que me suggérez-vous ?


bien lire le man ? :))

curl -Q "-DELE $AVIDER" ftp://$USER:$PASS@$ADRESSE/$REP/

patpro

--
je cherche un poste d'admin UNIX/Mac
http://patpro.net/cv.php

Avatar
julien.gautier
patpro wrote:

In article <1g5qyzl.1ln2m8336ss6N%,
(Julien Gautier) wrote:


Je pourrais utiliser tout simplement les commandes FTP, mais je souhaite
le faire de manière non-interactive : j'ai regardé ce que proposent
Wget, Curl, ncftpput, mais n'ai pas trouvé de fonction de ce type.

Que me suggérez-vous ?


bien lire le man ? :))

curl -Q "-DELE $AVIDER" ftp://$USER:$PASS@$ADRESSE/$REP/



Bah, en fait, je l'avais lu plusieurs fois.... Mais tout ce que je
trouve sur l'option -Q c'est :

-Q/--quote <comand>

(FTP) Send an arbitrary command to the remote FTP server, by using the
QUOTE command of the server. Not all servers support this command, and
the set of QUOTE commands are server specific! Quote commands are sent
BEFORE the transfer is taking place. To make commands take place after a
successful transfer, prefix them with a dash '-'. You may specify any
amount of commands to be run before and after the transfer. If the
server returns failure for one of the commands, the entire operation
will be aborted.

Ai-je loupé qq chose ?

On est bien d'accord qu'il s'agit d'effacer un fichier distant ?


Avatar
Stephane Chazelas
2003-12-10, 10:59(+01), Julien Gautier:
[...]
curl -Q "-DELE $AVIDER" ftp://$USER:$PASS@$ADRESSE/$REP/



Bah, en fait, je l'avais lu plusieurs fois.... Mais tout ce que je
trouve sur l'option -Q c'est :

-Q/--quote <comand>

(FTP) Send an arbitrary command to the remote FTP server, by using the
QUOTE command of the server. Not all servers support this command, and
the set of QUOTE commands are server specific! Quote commands are sent
BEFORE the transfer is taking place. To make commands take place after a
successful transfer, prefix them with a dash '-'. You may specify any
amount of commands to be run before and after the transfer. If the
server returns failure for one of the commands, the entire operation
will be aborted.
[...]


La page de man n'est pas correcte, je pense qu'ils confondent
SITE et quote. quote n'est pas un truc du serveur FTP mais de la
plupart des clients qui permet d'envoyer une commande FTP
"verbatim".

Ici DELE pour effacer un fichier.

L'intérêt du "-" dans "-DELE" est que le DELE est fait après le
LIST et surtout le CWD dans $REP. Il manque des doubles quotes
autour du troisième argument de curl.

tu peux aussi faire

ftp -n "$ADDRESS" << EOF
user $USER $PASS
cd $REP
del $FILE
EOF

--
Stéphane ["Stephane.Chazelas" arobase "free.fr"]


Avatar
Vincent
Julien Gautier wrote:
Bonjour,


j'aimerais pouvoir effacer un fichier se trouvant sur un serveur FTP
auquel j'ai accès.

Je pourrais utiliser tout simplement les commandes FTP, mais je souhaite
le faire de manière non-interactive : j'ai regardé ce que proposent
Wget, Curl, ncftpput, mais n'ai pas trouvé de fonction de ce type.

Que me suggérez-vous ?

Merci d'avance.


Bonjour,

Tu peux faire appel à un "here script" en shell si tu veux.

Un exemple :

ftp -n ftp.monserveur.com <<Session-FTP
user monuser monpass
prompt
tes_commandes
bye
Session-FTP

Tout ce qui est compris entre le
<<Session-FTP
et le
Session-FTP

Sont les commandes qui seront envoyées de manière "intéractive" par le
script lui même au serveur ftp ...

--
Cordialement,
Vincent JOUSSE

Avatar
Stephane Dupille
Bonjour,


Salut !

Tu peux faire appel à un "here script" en shell si tu veux.
< snip >


Bof. Ce genre de scripts va foirer à un moment où un autre. Il vaut
mieux utiliser des scripts expect pour faire ça, ce qui est hyper
facile avec autoexpect.

Sinon un petit script Perl.

--
If there' s another French on this list, will he be kind enough to
give me some addresses of places that still sells the Neo (and games) ?
I' ll be in Paris next week. Thanks for having read my terrible English.
-+- SB in : <http://www.le-gnu.net> - French spoken on fufe -+-

Avatar
julien.gautier
Stephane Chazelas wrote:

tu peux aussi faire

ftp -n "$ADDRESS" << EOF
user $USER $PASS
cd $REP
del $FILE
EOF


oui, c'est finalement cela que j'ai fait : c'est rudement pratique !

Avatar
julien.gautier
Stephane Dupille <sdupille+ wrote:


Bof. Ce genre de scripts va foirer à un moment où un autre.


c'est à dire ?

Avatar
Stephane Dupille
Bof. Ce genre de scripts va foirer à un moment où un autre.
c'est à dire ?



Rien ne vérifie les retours des commandes. Il suffit que le
répertoire change de nom, ou que le serveur ait des vapeurs, pour que
le script se mette à effacer n'importe quoi.

D'autre part, certains protocoles sont sensibles aux attentes entre
les commandes. il *faut* dans tous les cas attendre une réponse
positive avant de lancer la commande suivante. Et si la réponse est
négative, agir en conséquence, chose que ne fait pas du tout le
here-script. Si le serveur en face est chargé, et que le CD
n'aboutisse pas avant d'envoyer la commande DELE, rien ne garantit que
ce soit le bon fichier que vous vouliez effacer qui se retrouve
effacé.

Faire un here-script est trop simpliste pour piloter des
applications, même si ça semble marche la première fois. Ce n'est
qu'une rustine. Pour faire les choses sérieusement, il vaut mieux
utiliser expect, qui est fait pour ça. Et faire un script expect est
souvent plus rapide que de faire un here-script (autoexpect est là
pour ça).

--
Tu as une vision obsolète du Net. Les groupes sont hébergés chez les
FAI maintenant. Il FAUT que leur gestion change.
-+- Rocou in GNU : l'avenir appartient à ceux qui neuneutent tôt -+-


Avatar
Vincent
Julien Gautier wrote:

Stephane Dupille <sdupille+ wrote:


Bof. Ce genre de scripts va foirer à un moment où un autre.



c'est à dire ?


J'aimerais bien savoir aussi ;)

Ou les miens sont bien élevés depuis que je les utilise, ou alors
suis-je peut-être chanceux, mais pas de foirage pour moi.

--
Cordialement,
Vincent JOUSSE


Avatar
Stephane Chazelas
2003-12-10, 15:11(+01), Stephane Dupille:
[...]
D'autre part, certains protocoles sont sensibles aux attentes entre
les commandes. il *faut* dans tous les cas attendre une réponse
positive avant de lancer la commande suivante. Et si la réponse est
négative, agir en conséquence, chose que ne fait pas du tout le
here-script.


la commande cliente ftp ne fait qu'une opération à la fois,
herescript ou pas.

Le probleme avec le here script, c'est que les commandes sont
exécutées dans tous les cas, c'est tout (et déjà pas mal, on est
d'accord).

[...]
Faire un here-script est trop simpliste pour piloter des
applications, même si ça semble marche la première fois. Ce n'est
qu'une rustine. Pour faire les choses sérieusement, il vaut mieux
utiliser expect, qui est fait pour ça. Et faire un script expect est
souvent plus rapide que de faire un here-script (autoexpect est là
pour ça).


Expect est une rustine aussi. Au lieu d'installer expect, mieux
vaut installer la bonne application ou utiliser perl

Avec lftp:

lftp -c "
set cmd:fail-exit yes
open 'ftp://$USER:$PASS@$HOST'
cd '$DIR'
rm '$FILE'
"

(il y aura des problemes si les variables contiennent des single
quotes ou des sauts de lignes ou des ou si USER ou PASS
contiennent des : @ /)

--
Stéphane ["Stephane.Chazelas" arobase "free.fr"]

1 2