Posez votre question Signaler

Script FTP unix

Deeper - Dernière réponse le 4 juin 2009 à 18:57
Bonjour,
Je souhaite executer un script sur un serveur A qui se connecte en FTP sur un serveur B et qui put un fichier.
Lorsque j'exécute ce script à partir du prompt, je n'ai pas de soucis.
En revanche, j'utilise un logiciel qui execute des commandes unix. Lorsque je lui demande d'executer ce script, la partie FTP ne fonctionne pas.
Mon script.sh :
#!/bin/ksh
. /home/monuser/.profile
remoteserver="monserv"
username="user"
password="pass"
set>toto.txt
ftp -i -n $remoteserver << END_SCRIPT
quote USER $username
quote PASS $password
cd /mondir
put monfic.txt
quit
END_SCRIPT
exit
Je cale complètement.
Merci d'avance
Lire la suite 

Script FTP unix »

5 réponses
Réponse
+0
moins plus
Salut,

Regarde du côté de la commande "expect".

Voir ce thread pour un exemple.
Ajouter un commentaire
Réponse
+0
moins plus
Merci Jipicy,

J'ai le même probème avec expect.
Le script lancé à partir du prompt me transfère bien le fichier, mais dès que je l'exécute à partir du programme, rien en face (malgré que le programme s'exécute bien)

#!/usr/bin/expect -f
set force_conservative 1 ;
set timeout 2
spawn ftp -i monserveur
expect "Name *:"
send "login\r"
expect "Password:"
send "password\r"
expect "ftp>"
send "binary\r"
expect "ftp>"
send "lcd /monrep/\r"
expect "ftp>"
send "put $1\r"
expect "ftp>"
send "quit\r"
Ajouter un commentaire
Réponse
+0
moins plus
Parce qu'il faut déclarer les variables passées en paramètres, voir cet autre thread ;-))
Ajouter un commentaire
Réponse
+0
moins plus
Merci Jipicy,

J'ai fait la modif, mais le problème n'est pas seulement là. Auparavant j'avais mis le nom du fichier à puter en dur.
Effectivement maintenant le paramètre passe dans le script.
set nomfic [lindex $argv 0]
send "put $nomfic.sas\r"


Malheureusement lorsque j'exécute le script au travers du logiciel, la partie ftp ne fonctionne toujours pas...
Ajouter un commentaire
Réponse
+0
moins plus
Bon je viens de faire un test chez moi et ça marche bien ;-\

Voilà le script et le déroulement des opérations...
[tmpfs]$ cat foo.sh
#! /usr/bin/expect -f

set force_conservative 1 ;

set timeout 2

set name [lindex $argv 0]

spawn ftp 192.168.1.250
expect "Name (192.168.1.250:jp):"
send "\r"
expect "Password:"
send "xxxxxx\r"
expect "ftp>"
send "cd MDK\r"
expect "ftp>"
send "get $name\r"
expect "ftp>"
send "bye\r"

[tmpfs]$ ./foo.sh ccm.css
spawn ftp 192.168.1.250
Connected to 192.168.1.250.
220 ProFTPD 1.3.2rc3 Server (freenas FTP Server) [::ffff:192.168.1.250]
500 AUTH not understood
Name (192.168.1.250:jp):
331 Password required for jp
Password:
230-Welcome to FreeNAS FTP Server
230 User jp logged in
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd MDK
250 CWD command successful
ftp> get ccm.css
local: ccm.css remote: ccm.css
200 PORT command successful
150 Opening BINARY mode data connection for ccm.css (11445 bytes)
226 Transfer complete
11445 bytes received in 0.0021 seconds (5.2e+03 Kbytes/s)
ftp> 
[tmpfs]$ ls
ccm.css  diff.pdf  email.sent  f1  f2  foo.sh*  foo.sh~* 
[tmpfs]$
;-))
Ajouter un commentaire
Ce document intitulé « Script FTP unix » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook