Script FTP unix

Deeper -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
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
A voir également:

5 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

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

Voir ce thread pour un exemple.
0
Deeper
 
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"
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Parce qu'il faut déclarer les variables passées en paramètres, voir cet autre thread ;-))
0
Deeper
 
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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]$
;-))
0