Rechercher : dans
Par :

[Unix] FTP sous Unix

Dernière réponse le 24 jan 2007 à 14:44:04 Trezeg, le 17 jan 2007 à 14:07:18 
 Signaler ce message aux modérateurs

Bonjour,
J'aimerais savoir s'il était possible de supprimer les demandes de confirmation lors d'un FTP sous Unix.
Plus precisemment, je voudrais lancer la commande suivante dans mon shell:

SRV_FILE=monServeur
CMD_DIR=monCompte/ftp
CMD_FILE=mesCommandes.cmd
SRV_FTP=monServeurCible
ftp -i $SRV_FILE/$CMD_DIR/$CMD_FILE $SRV_FTP
Le contenu du ficher CMD_FILE est le suivant:
ocpa
ftp_ocpa
binary
lcd ../data/Appli/Retour/PourTransmettre
rm -f PTZ_I
put PTZ
mv PTZ_I.LST PTZ_I
put PTZ_I
mv *.csv ./../Transmis
rm -f *.tmp
quit
Je voudrais que le contenu du fichier CMD_FILE puisse etre exécuté sans qu'il ne soit demandé de confirmation.

Merci pour votre aide.

Meilleures réponses pour « [Unix] FTP sous Unix » dans :
Les commandes FTP Voir Le protocole FTP FTP (File Transfer Protocol) est un protocole, c'est-à-dire un langage standard de communication entre deux machines, permettant à des machines de types différents (ou dont le système d'exploitation est différent) de...
Code pour télécommande universelle VoirTélécommande universelle Philips Télécommande universelle Thomson ROC Télécommande universelle One for all Télécommande universelle Star Choice Télécommande universelle Marmitek Télécommande universelle Lifetec LT Télécommande universelle...
Installer un serveur FTP sous Windows VoirVersion rapide Version un peu moins rapide (mais plus propre) Version serveur propre Liens Pour aller plus loin : Accédez à votre serveur FTP n'importe où dans le monde Notes Version rapide VITE, JE VEUX INSTALLER UN SERVEUR FTP TOUT...
Unidialog - Accès impossible VoirLe Service Unidialog des Assedic permet à tout moment, partout en France, d'effectuer le traitement immédiat de votre dossier : déclaration de situation mensuelle consultation de votre dossier obtention d'une attestation changement de...
Télécharger Revo Uninstaller VoirRevo Uninstaller est un logiciel édité par VS Revo Group permettant de faire un nettoyage en profondeur avec diverses fonctionnalités : Nettoyage, désinstallation de programmes avec suppression des clefs de registres périmées. Un mode Chasseur...
Utilisation de la commande ftp VoirLe protocole FTP FTP (File Transfer Protocol) est un protocole, c'est-à-dire un langage standard de communication entre deux machines, permettant à des machines de types différents (ou dont le système d'exploitation est différent) de transférer des...
Commandes UNIX VoirTableau des principales commandes UNIX Commande Unix Description Options ls liste le contenu d'un répertoire -a Affiche tous les fichiers, y compris les fichiers cachés ...
Le bus USB (Universal Serial Bus) VoirPrésentation du bus USB Le bus USB (Universal Serial Bus, en français Bus série universel) est, comme son nom l'indique, basé sur une architecture de type série. Il s'agit toutefois d'une interface entrée-sortie beaucoup plus rapide que les ports...

1

jipicy, le 17 jan 2007 à 18:44:41

Salut,

Regarde du côté de la commande "expect" (man expect) et :
http://www.oreilly.com/catalog/expect/chapter/ch03.html
http://expect.nist.gov/example/

;-)) Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

2

Trezeg, le 22 jan 2007 à 17:34:48

Merci jipicy, mais je ne suis pas très à mon aise avec la langue de shakespeare... :-(
Cela dit, j'ai bidouillé un truc (que je ne peux hélas pas tester pour le moment) avec ce que j'ai compris de ces tutoriaux. La syntaxe suivante est-elle correcte ?

expect "Name*:"
send "ocpa\r"
expect "Password:"
send "ftp_ocpa\r"
expect "ftp>"
send "binary\r"
expect "ftp>"
send "lcd ../data/Appli/Retour/PourTransmettre\r"
expect "550*ftp>" exit "250*ftp>"
send "rm -f PTZ_I\r"
expect "550*ftp>" exit "250*ftp>"
send "put PTZ\r"
expect "550*ftp>" exit "200*226*ftp>"
send "mv PTZ_I.LST PTZ_I\r"
expect "550*ftp>" exit "200*226*ftp>"
send "put PTZ_I\r"
expect "550*ftp>" exit "200*226*ftp>"
send "mv *.csv ./../Transmis\r"
expect "550*ftp>" exit "200*226*ftp>"
send "rm -f *.tmp\r"
expect "550*ftp>" exit "200*226*ftp>"
send "quit\r"

Dois-je lancer le contenu de ce fichier (que je nomme CMD_FILE) de la manière suivante ?
$ ftp -i $SRV_FILE/$CMD_DIR/$$CMD_FILE $SRV_FTP.
Y a-t-il d'autres commandes à prévoir pour éviter que le prompt ftp ne me demande confirmation ?

Merci.

Trezeg

Répondre à Trezeg

3

Trezeg, le 23 jan 2007 à 18:25:09

Re-hello,

J'ai pu finalement tester quelque chose utilisant "expect":

#!/bin/ksh
SRV_FTP=neptune.net
ftp -i $SRV_FTP
expect "Name*:"
send "opercti\r"
expect "Password:"
send "opercti\r"
expect "ftp>"
send "binary\r"
expect "ftp>"
send "lcd ../data/OCP/805178/RetourRAPI/PourTransmettre\r"
expect "550*ftp>" exit "250*ftp>"
send "put temoin\r"
expect "550*ftp>" exit "200*226*ftp>"
send "quit\r"
Voici ce que j'obtiens:
Connected to neptune.net.
220 neptune FTP server (Version 1.1.214.4(PHNE_23950) Tue May 22 05:49:01 GMT 20
01) ready.
Remote system type is UNIX.
Using binary mode to transfer files.
CCS-Init-extranet.sh: expect: command not found
CCS-Init-extranet.sh: send: command not found
CCS-Init-extranet.sh: expect: command not found
CCS-Init-extranet.sh: send: command not found
CCS-Init-extranet.sh: expect: command not found
CCS-Init-extranet.sh: send: command not found
CCS-Init-extranet.sh: expect: command not found
CCS-Init-extranet.sh: send: command not found
CCS-Init-extranet.sh: expect: command not found
CCS-Init-extranet.sh: send: command not found
CCS-Init-extranet.sh: expect: command not found
CCS-Init-extranet.sh: send: command not found 
Il n'aime pas trop les expect et send... Le problème est que le package n'est pas dans le systeme... Quelqu'un aurait une solution alternative pour utiliser ftp sans interaction ou bien le package est-il imperatif ? Dans ce cas, où le trouver ?
Merci infiniment,
Trezeg

Répondre à Trezeg

4

jipicy, le 23 jan 2007 à 18:35:48

Salut,

Essaie plutôt :

#!/usr/bin/expect -f

set force_conservative 1 ;

set timeout 2
spawn ftp -i neptune.net
expect "Name*:"
send "opercti\r"
expect "Password:"
send "opercti\r"
expect "ftp>"
send "binary\r"
expect "ftp>"
send "lcd ../data/OCP/805178/RetourRAPI/PourTransmettre\r"
expect "550*ftp>" exit "250*ftp>"
send "put temoin\r"
expect "550*ftp>" exit "200*226*ftp>"
send "quit\r"
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

5

Trezeg, le 23 jan 2007 à 18:51:06

Salut jipicy,
j'obtiens les memes messages d'erreur

./CCS-Init-extranet.sh[22]: spawn:  not found
./CCS-Init-extranet.sh[23]: expect:  not found
./CCS-Init-extranet.sh[24]: send:  not found
./CCS-Init-extranet.sh[25]: expect:  not found
./CCS-Init-extranet.sh[26]: send:  not found
./CCS-Init-extranet.sh[27]: expect:  not found
./CCS-Init-extranet.sh[28]: send:  not found
./CCS-Init-extranet.sh[29]: expect:  not found
./CCS-Init-extranet.sh[30]: send:  not found
./CCS-Init-extranet.sh[31]: expect:  not found
./CCS-Init-extranet.sh[32]: send:  not found
./CCS-Init-extranet.sh[33]: expect:  not found
./CCS-Init-extranet.sh[34]: send:  not found 
J'ai fouilé dans le /usr/bin mais je ne vois aucune trace de la commande expect
Amclt,
Trezeg

Répondre à Trezeg

6

jipicy, le 23 jan 2007 à 18:55:12

Re-

Le paquet n'est tout simplement pas installé peut être :-\
Ou alors il est ailleurs...

Fait une recherche avec :

whereis expect
ou avec :
locate expect
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

7

Trezeg, le 24 jan 2007 à 11:00:00

Hello,
Voici les résultats de mes recherches :

$ whereis expect
expect:
$ locate expect
ksh: locate:  not found
Je ne sais pas comment interpréter le résultat de ce whereis...
Est-ce un message d'erreur ?

Amclt,

Trezg

Répondre à Trezeg

8

jipicy, le 24 jan 2007 à 12:44:21

Re-

Je ne sais pas comment interpréter le résultat de ce whereis...
Est-ce un message d'erreur ?

Non, ça veut tout simplement dire qu'il ne trouve pas la commande dans les répertoires où elle serait susceptible de se trouver.
En deux mots, la commande n'est pas installée ;-(

;-) Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

9

Trezeg, le 24 jan 2007 à 14:13:44

Hello,
J'ai trouvé un truc qui marche à peu près :)))

#!/bin/bash
#!/bin/ksh
ftp -n $SRV_FTP <<Fin-de-Session
user $monUser $monPassword
binary
lcd ../data/OCP/805178/Retour/PourTransmettre
put temoin
delete temoin2
bye
Mais il y a un hic... Après avoir interpreté le Bye, le shell se termine avec le message suivant
Local directory now /data/OCP/805178/Retour/PourTransmettre
alors qu'il y a d'autres instructions qui suivent dans ce meme shell...
Y'aurait-il un moyen de continuer ? J'ai ajouté un & wait après le Bye mais rien n'y fait.

Merci

Trezeg

Répondre à Trezeg

10

jipicy, le 24 jan 2007 à 14:31:44

Re-

Essaie de mettre toute ta partie "ftp" entre parenthèses (afin de faire exécuter l'ensemble par un shell fils...) :

(
ftp -n $SRV_FTP <<Fin-de-Session
user $monUser $monPassword
binary
lcd ../data/OCP/805178/Retour/PourTransmettre
put temoin
delete temoin2
bye
)
bla...
bla...
;-)) Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

11

[Dal], le 24 jan 2007 à 14:37:06

Salut,

L'étiquette "Fin-de-Session" doit se trouver à la fin de ta session ftp, après le bye, pour que le reste de ton script cesse d'être envoyé sur le stdin de la commande ftp et continue d'être interprété par ton interpréteur de commandes.

Donc :

(...)
delete temoin2
bye
Fin-de-Session

(ici la suite de ton script)



Dal

Répondre à [Dal]

12

 Trezeg, le 24 jan 2007 à 14:44:04

Ca marche NI-KEL :)))
Merci à vous deux !

Trezeg

Répondre à Trezeg