Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Makefile et Here document/string

14 réponses
Avatar
Lucas Levrel
Bonjour,

Pour passer des commandes à ftp je fais :
ftp serveur <<<$'put toto \nbye'
ou
ftp serveur <<EOT
put toto
bye
EOT

Je voudrais le mettre dans un Makefile :
ftp : toto
ftp serveur ... ?

Je n'arrive pas à le faire (je connais mal la syntaxe des Makefile, leurs
séquences d'échappement, etc.), pouvez-vous m'aider ?

Merci.
--
LL

10 réponses

1 2
Avatar
xavier
Lucas Levrel wrote:

Je voudrais le mettre dans un Makefile :
ftp : toto
ftp serveur ... ?



Pourquoi ne pas utiliser un outil comme curl ou wget ?

--
XAv
In your pomp and all your glory you're a poorer man than me,
as you lick the boots of death born out of fear.
(Jethro Tull)
Avatar
Alain Montfranc
Xavier a émis l'idée suivante :
Lucas Levrel wrote:

Je voudrais le mettre dans un Makefile :
ftp : toto
ftp serveur ... ?



Pourquoi ne pas utiliser un outil comme curl ou wget ?



+1
Avatar
Lucas Levrel
Le 10 mars 2012, Xavier a écrit :

Je voudrais le mettre dans un Makefile :
ftp : toto
ftp serveur ... ?



Pourquoi ne pas utiliser un outil comme curl ou wget ?



Je n'ai pas l'impression que wget fasse de l'upload.

Quant à curl, le man fait près de 2000 lignes et n'a pas d'exemple.
Pourriez-vous me donner la syntaxe pour uploader un fichier ? Merci.

Enfin, si quelqu'un a la réponse à la question initiale, ça m'intéresse
aussi :-) (Y'a pas que ftp dans la vie !)

--
LL
Avatar
Damien Wyart
* Lucas Levrel in fr.comp.os.unix:
Je n'ai pas l'impression que wget fasse de l'upload.



Tu peux essayer wput.

Quant à curl, le man fait près de 2000 lignes et n'a pas d'exemple.
Pourriez-vous me donner la syntaxe pour uploader un fichier ? Merci.



Il s'agit de l'option -T

--
DW
Avatar
Lucas Levrel
Le 12 mars 2012, Damien Wyart a écrit :

Quant à curl, le man fait près de 2000 lignes et n'a pas d'exemple.
Pourriez-vous me donner la syntaxe pour uploader un fichier ? Merci.



Il s'agit de l'option -T



Merci. Comme il mettait trois plombes (minutes en fait) avant de démarrer
le transfert qui dure 10 secondes, j'ai dû fouiller le man pour trouver la
combinaison magique :
curl -n -P - --disable-eprt -T fichier serveur

Comme quoi une section d'exemples aurait été bienvenue !

Peut-être wput aurait été plus simple ? (Pas testé car il n'est pas
installé, donc j'ai commencé par essayer curl.)

--
LL
Avatar
Alain Montfranc
Lucas Levrel a exposé le 12/03/2012 :
Le 12 mars 2012, Damien Wyart a écrit :

Quant à curl, le man fait près de 2000 lignes et n'a pas d'exemple.
Pourriez-vous me donner la syntaxe pour uploader un fichier ? Merci.



Il s'agit de l'option -T



Merci. Comme il mettait trois plombes (minutes en fait) avant de démarrer le
transfert qui dure 10 secondes, j'ai dû fouiller le man pour trouver la
combinaison magique :
curl -n -P - --disable-eprt -T fichier serveur

Comme quoi une section d'exemples aurait été bienvenue !

Peut-être wput aurait été plus simple ? (Pas testé car il n'est pas installé,
donc j'ai commencé par essayer curl.)



Ceci dit, FTP est un protocole pourri. Remplacez le par un sftp ou un
rsync si vousen avez la possibilité...
Avatar
Tonton Th
On 03/11/2012 09:44 PM, Lucas Levrel wrote:

Je voudrais le mettre dans un Makefile :
ftp : toto
ftp serveur ... ?



Pourquoi ne pas utiliser un outil comme curl ou wget ?



Je n'ai pas l'impression que wget fasse de l'upload.



Tu peux aussi regarder la gamme ncftp, et plus
particulièrement ncftpput.


--

Nous vivons dans un monde étrange/
http://foo.bar.quux.over-blog.com/
Avatar
naddy
Lucas Levrel wrote:

ftp serveur <<EOT
put toto
bye
EOT

Je voudrais le mettre dans un Makefile :
ftp : toto
ftp serveur ... ?



C'est impossible. Un here document consiste de plusieurs lignes,
mais make(1) passe toujours une seule ligne au $SHELL.

Si on met

ftp : toto
ftp serveur <<EOT
put toto
bye
EOT

make essaiera d'exécuter

sh -c 'ftp serveur <<EOT'
sh -c 'put toto'
sh -c 'bye'
sh -c 'EOF'

Je n'arrive pas à le faire (je connais mal la syntaxe des Makefile, leurs
séquences d'échappement, etc.), pouvez-vous m'aider ?



On peut couper des lignes longues...

ftp : toto
ftp serveur <<EOT
put toto
bye
EOT

... mais ça donne

sh -c 'ftp serveur <<EOT put toto bye EOT'

Il faudrait une séquence d'échappement pour insérer un saut de
ligne, mais ça n'existe pas.


Cependant, il est possible d'utiliser un autre outil qui permet
d'insérer des sauts de ligne, p. ex. printf(1):

ftp : toto
printf 'put totonbyen' | ftp serveur

ou

COMMANDES = 'put toton
byen'

ftp : toto
printf $(COMMANDES) | ftp serveur

--
Christian "naddy" Weisgerber
Avatar
naddy
Xavier wrote:

> Je voudrais le mettre dans un Makefile :
> ftp : toto
> ftp serveur ... ?

Pourquoi ne pas utiliser un outil comme curl ou wget ?



Il y a aussi le fichier ~/.netrc.

--
Christian "naddy" Weisgerber
Avatar
Lucas Levrel
Le 12 mars 2012, Christian Weisgerber a écrit :

make(1) passe toujours une seule ligne au $SHELL.

Il faudrait une séquence d'échappement pour insérer un saut de
ligne, mais ça n'existe pas.



C'est bon à savoir !

Cependant, il est possible d'utiliser un autre outil qui permet
d'insérer des sauts de ligne, p. ex. printf(1):

ftp : toto
printf 'put totonbyen' | ftp serveur



Merci !

--
LL
1 2