Partage
  • Partager sur Facebook
  • Partager sur Twitter

script ftp sous linux

Sujet résolu
11 février 2019 à 14:41:31

Bonjour,

Voici un script très simple pour récupérer des fichiers sur serveurs ftp, rien de très compliqué...

ftp -niv 192.168.1.15 <<EOF
              user login mdp
              lcd /home/bdd/scripts/nom/ici
              cd www.xxxxx.xxx.fr/scripts/ici
              ascii
              prompt off
              get mon fichier.csv monfichier.csv
              close
              bye

Sauf que aujourd'hui j'ai un soucis.

Mes fichiers ftp que je dois récupérer 1 fois par jour, on un nom un peu imprévisible: comme ceci:

Fichier_P_20190206_0915.csv

Pour le début du nom, pas de soucis, la suite non plus (c'est le jour yyyymmdd) mais l'heure je la connais pas à l'avance. :(

Est-ce possible de contourner le problème ? Avec les regex peut être ? Mais je sais pas comment les intégrer à une commande ftp, est-ce possible ?. (Je maitrise pas du tout le batch). :waw:

Quelqu'un a une idée ? :ange:

Merci :magicien:

-
Edité par fafine 11 février 2019 à 14:42:46

  • Partager sur Facebook
  • Partager sur Twitter
11 février 2019 à 14:54:09

Salut,

Pourquoi ne pas utiliser une wildcard si tu veux récupérer tous les fichiers dont les noms commencent par une même chaîne de caractères ?

  • Partager sur Facebook
  • Partager sur Twitter
11 février 2019 à 14:58:38

Salut,

Je veux récupérer seulement 1 fichier par jour et il y a plusieurs fichiers en permanence sur le ftp.

  • Partager sur Facebook
  • Partager sur Twitter
11 février 2019 à 15:07:58

salut,

"récupérer seulement 1 fichier",  celui qui porte la date du jour ?

  • Partager sur Facebook
  • Partager sur Twitter
« un problème clairement exposé est à moitié résolu. » | je ne réponds pas aux questions techniques par MP.
11 février 2019 à 15:10:24

Oui c'est ça. La seule variable inconnu c'est l'heure (à quelques minutes près).

Je suis entrain de tester des choses:

get Fichier_P_20190211_*.csv fichier.csv

l'étoile c'est l'inconnu...

Il faudrait une commande pour dire osef de la fin du fichier.

-
Edité par fafine 11 février 2019 à 15:15:39

  • Partager sur Facebook
  • Partager sur Twitter
11 février 2019 à 15:34:08

c'est ce qu'indique l'astérisque : osef ;)
  • Partager sur Facebook
  • Partager sur Twitter
« un problème clairement exposé est à moitié résolu. » | je ne réponds pas aux questions techniques par MP.
11 février 2019 à 16:05:19

C'est se que je pensais aussi. Mais à ce niveau, ça ne fonctionne pas.

C'est compréhensible, c'est une commande qui va chercher un fichier distant, on peut pas lui dire "va me chercher un fichier dont je connais que la moitié du nom".

Je pense que c'est pas possible se que je veux faire ou pas simplement...

EDIT: ça fonctionne; La solution est d'utiliser mget ou lieu de get.

Merci :soleil:

-
Edité par fafine 11 février 2019 à 16:07:50

  • Partager sur Facebook
  • Partager sur Twitter
11 février 2019 à 16:13:46

mget pour télécharger de maint (aka many, i.e. plusieurs) fichiers

-
Edité par dantonq 11 février 2019 à 19:25:07

  • Partager sur Facebook
  • Partager sur Twitter
« un problème clairement exposé est à moitié résolu. » | je ne réponds pas aux questions techniques par MP.
11 février 2019 à 17:02:37

oui je sais. Mais les wildcard ne fonctionne pas avec get, seulement avec mget.
  • Partager sur Facebook
  • Partager sur Twitter
11 février 2019 à 19:24:17

ah, oui ! c'est bizarre.
ça peut se comprendre, mais ça fait tout bizarre. ;)

  • Partager sur Facebook
  • Partager sur Twitter
« un problème clairement exposé est à moitié résolu. » | je ne réponds pas aux questions techniques par MP.
11 février 2019 à 20:41:59

Tu as essayé d'échapper l'astérisque ? Toutes les commandes ne reconnaissent pas par défaut une wildcard et peuvent interpréter l'astérisque comme un caractère et peuvent nécessiter de l'échapper pour l'interpréter comme une wildcard. C'est par exemple le cas avec dnf dans Fedora.
  • Partager sur Facebook
  • Partager sur Twitter
11 février 2019 à 21:35:05

ftp> ls *texi*
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r--    1 3003     65534       65354 Mar 21  2000 bashref.texi.gz
226 Directory send OK.
ftp> get \*texi\*
local: bashref.texi.gz remote: *texi*
200 PORT command successful. Consider using PASV.
550 Failed to open file.
ftp> get *texi*
local: bashref.texi.gz remote: *texi*
200 PORT command successful. Consider using PASV.
550 Failed to open file.
ftp>

-
Edité par dantonq 11 février 2019 à 21:35:36

  • Partager sur Facebook
  • Partager sur Twitter
« un problème clairement exposé est à moitié résolu. » | je ne réponds pas aux questions techniques par MP.
11 février 2019 à 21:40:55

Merci pour les tests @danstonq, je n'avais pas de serveur ftp sous la main pour tester. C'est étonnant comme comportement, il a l'air de trouver le bon fichier mais n'arrive pas à l'ouvrir.

-
Edité par Typhlos 11 février 2019 à 21:49:46

  • Partager sur Facebook
  • Partager sur Twitter
11 février 2019 à 22:00:51

$ printf '%s\n' 'machine ftp.gnu.org' 'login anonymous' >/tmp/netrc
$ ftp -p -N /tmp/netrc ftp.gnu.org
bla...bla..
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
  • Partager sur Facebook
  • Partager sur Twitter
« un problème clairement exposé est à moitié résolu. » | je ne réponds pas aux questions techniques par MP.

script ftp sous linux

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
  • Editeur
  • Markdown