Probleme d'automatisation de transfert ftp [Résolu/Fermé]

dolu95 - 27 mai 2008 à 11:28 - Dernière réponse :  dolu95
- 28 mai 2008 à 17:24
Bonjour a tous

je suis en ce moment en stage pour mon dut, et j'ai un souci avec un script. En faite, je dois créer un script qui automatise un transfert de fichier d'un serveur a un autre via ftp. le problème est que mon script s'execute au peut pres correctement jusqu'au moment de l'identification du ftp. Le compte que j'utilise est un compte qui a ete créer pour un logiciel qui sert a superviser le réseau. Alors j'ai fouillé un peu, j'ai essayé plusieurs solution que j'ai trouvé sur internet, mais ca ne fonctionne toujours pas. En plus niveau linux je m'y connais vraiment pas c'est pas mon systeme d'exploitation préféré!! ^^ Je vous donne la partie connexion ftp de mon script pour m'aiguiller un peu, vous les pro du linux ^^

P.S: j'croie que c'est HPUX qui est installé sur le serveur que j'utilise pour mon script.


username="lecl.."
password="dol..."

ftp serveur

user $username
pwd $password

....
Afficher la suite 

20 réponses

jipicy 43485 Messages postés jeudi 28 août 2003Date d'inscriptionModérateurStatut 7 novembre 2010 Dernière intervention - 27 mai 2008 à 11:44
0
Utile
1
SAlut,

Regarde du côté de la commande "expect".
Voici un lien vers une discussion où tu trouveras un début d'explications et des liens externes vers de la doc sur "expect" :
http://www.commentcamarche.net/forum/affich 2340762 ssh ecrire un script pour connexion ssh
merci pour le lien j'y vais dessuite essayé de comprendre comment ca fonctionne ^^

J'ai essayé de rajouté " - n " apres la commande ftp mais bon ca n'a rien changé.. :(. Donc maintenant j'vais testé avec expect voir comment j'peux l'utiliser.
dubcek 17178 Messages postés lundi 15 janvier 2007Date d'inscriptionContributeurStatut 10 décembre 2017 Dernière intervention - 27 mai 2008 à 12:21
0
Utile
3
hello
et

ftp serveur << EOD
user $username $password
cmd
cmd
cmd
EOD

remplacer cmd par les commandes ftp, man ftp pour le detail
voir aussi l'utilisation du fichier .netrc
me revoila apres la pause repas^^

alors j'ai essayé la commande expect en suivant les liens qui etait sur l'autre post, ca me mets un message d'erreur.

Voici mon script:

Spawn ftp serveur

expect "Name"
send "lecl..."

expect "Password:"
send "dol...."

expect "ftp> "
send "cd test"

Voici le message d'erreur:

./script_tar_ftp_20080523_v2.ksh[60]: spawn: not found
./script_tar_ftp_20080523_v2.ksh[62]: expect: not found
./script_tar_ftp_20080523_v2.ksh[63]: send: not found
./script_tar_ftp_20080523_v2.ksh[65]: expect: not found
./script_tar_ftp_20080523_v2.ksh[66]: send: not found
La connexion ftp est etablie
./script_tar_ftp_20080523_v2.ksh[71]: expect: not found
./script_tar_ftp_20080523_v2.ksh[72]: send: not found
Vous etes dans le dossier test

??? est ce que cela veut dire que la version que j'utilise ne connais pas ces commandes?

Pour dubcek:

J'ai deja essayé avec EOD ca change rien appart que ca me marque: [password][linus:...]:

Pour le Netrc, j'ai vu sur un forum qu'on en parlais j'ai ete voir et il n'est pas installé sur le profile que j'utilise pour transférer les fichiers! :'(
jipicy 43485 Messages postés jeudi 28 août 2003Date d'inscriptionModérateurStatut 7 novembre 2010 Dernière intervention > dolu95 - 27 mai 2008 à 16:01
Est-ce que ton script commence bien par "#!/usr/bin/expect -f" ? (enfin faut adapter le chemin vers expect peut être)
jipicy 43485 Messages postés jeudi 28 août 2003Date d'inscriptionModérateurStatut 7 novembre 2010 Dernière intervention > dolu95 - 27 mai 2008 à 17:52
Petit exemple avec "expect" sur un serveur local "lampion" avec une connexion en "anonymous", sans mot de passe et récupération d'un fichier...

Le script :
#! /usr/bin/expect -f
#
set force_conservative 1
set timeout 2
puts "\n"
#
spawn ftp lampion
expect "Name*:*"
send -- "anonymous\r"
expect "Password:*"
send -- "\r"
expect "ftp>*"
send -- "get bienvenue.txt\r"
expect "ftp>*"

puts "\n"
exit
Et l'exécution :
[trash]$ ./foo.expect


spawn ftp lampion
Connected to lampion.localdomain.
220 (vsFTPd 2.0.4)
530 Please login with USER and PASS.
Name (lampion:jp): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get bienvenue.txt
local: bienvenue.txt remote: bienvenue.txt
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for bienvenue.txt (960 bytes).
226 File send OK.
960 bytes received in 0.00031 seconds (3.1e+03 Kbytes/s)
ftp>

[trash]$ ls
bienvenue.txt  fich  foo.expect*  plop  plop~  
[trash]$  
;-))
dubcek 17178 Messages postés lundi 15 janvier 2007Date d'inscriptionContributeurStatut 10 décembre 2017 Dernière intervention - 27 mai 2008 à 14:19
0
Utile
2
je parlais de .netrc, fichier qui permet d'automatiser des logins et commandes ftp, voir man ftp
oui oui j'ai bien compris mais il y est pas. c'est bien dans /home/compte ?
regarde ce que j'ai:

[....:health:/home/health]
$ls -ali
total 416
2815 drwxr-xr-x 5 health concord 8192 May 27 11:03 .
2681 dr-xr-xr-x 7 bin bin 8192 Dec 27 15:27 ..
2938 -rw------- 1 health concord 590 Jun 15 2005 .ICEauthority
2911 -rw------- 1 health concord 144 Jun 15 2005 .TTauthority
2903 -rw------- 1 health concord 98 Jun 15 2005 .Xauthority
2833 -r--r--r-- 1 health concord 832 Nov 14 2000 .cshrc
2924 drwxr-xr-x 11 health concord 8192 Jun 15 2005 .dt
2928 -rwxr-xr-x 1 health concord 5451 May 19 2005 .dtprofile
2856 -r--r--r-- 1 health concord 347 Nov 14 2000 .exrc
2857 -r--r--r-- 1 health concord 334 Nov 14 2000 .login
2858 -r--r--r-- 1 health concord 456 Jun 15 2005 .profile
3165 -rw------- 1 health concord 2624 Feb 18 17:17 .sh_history
621 -rw------- 1 health concord 3080 May 27 14:33 .sh_history.0
3362 -rw------- 1 health concord 1286 May 14 12:16 .sh_history.1
3370 -rw------- 1 health concord 68 Apr 17 14:09 .sh_history.2
2943 -rw------- 1 health concord 3326 May 21 11:45 .sh_history.ta
3199 -rw------- 1 health concord 130 Mar 19 14:43 .sh_history.tb
279 -rw------- 1 health concord 3320 May 16 17:26 .sh_history.tc
2706 -rw------- 1 health concord 1156 Apr 21 11:50 .sh_history.td
2871 -rw------- 1 health concord 202 Apr 11 17:09 .sh_history.te
3197 -rw------- 1 health concord 66 Apr 2 16:53 .sh_history.tf
3363 -rw------- 1 health concord 146 Apr 2 17:08 .sh_history.tg
3343 drwx------ 2 health concord 96 Apr 11 15:52 .ssh
2967 drwxrwxr-x 2 root sys 96 May 20 2005 log
312 -rw-r----- 1 health concord 31328 Nov 14 2005 logoLH.gif
2999 lrwxrwxr-x 1 health concord 35 Jun 15 2005 nethealthrc -> /opt/prod/nethealth/nethealthrc.ksh
[....:health:/home/health]
$
dubcek 17178 Messages postés lundi 15 janvier 2007Date d'inscriptionContributeurStatut 10 décembre 2017 Dernière intervention - 27 mai 2008 à 14:42
0
Utile
2
!! mails il faut le créer !!! alors ftp le lira
qu'est ce qui ne marche pas avec ftp serveur << EOD ?
ce qu'il ne marche pas c'est qu'il me demande tjs de rentré mon mot de passe et le nom d'utilisateur! enfin il me dit comme koi j'suis pas identifié! j'modifie mon script j'remets ac EOD et j'te montre ca dans 2min!

Dsl pour le .netrc, j'croyais que ca devait etre installé j'savais pas kil fallais le créer! :$
voila alors g fais une copie de mon script et j'lai modifié avec t'a solution voila ce que ca donne.

le script:

username="lecl..."
password="dol...."

ftp linus<<EOD

user $username $password

cd test

echo "Vous etes dans le bon dossier"

EOD

le resultat:

Password:Name (linus:health):
dubcek 17178 Messages postés lundi 15 janvier 2007Date d'inscriptionContributeurStatut 10 décembre 2017 Dernière intervention - 27 mai 2008 à 15:42
0
Utile
4
echo n'est pas une commande ftp
est ce que ca marche manuellement

ftp linus
user lecl dol
dir
bas si j'me connecte manuellement sur le serveur oui ca fonctionne, enfin j'tape ftp linus, j'rentre mon login et ensuite mon mot de passe et j'suis connecté.
j'viens de créer le fichier .netrc, j'vais fumer une clope et je test apres j'te donne des nouvelles!
ca y est, j'arrive a me connecté automatiquement!! c'est grace au fichier .netrc merci bcp pour l'astuce!! maintenant il me reste plus qu'a comprendre comment traduire du shell en ftp!!^^ c'est une autre histoire!!
comment j'peux faire dans mon script, une fois kil s'est connecté au ftp, qu'il aille dans le dossier test du serveur sur lequel j'suis connecté??
j'ai mis "cd test" dans mon script juste apres ftp linus, mais ne fonctionne pas apparemment il me change pas de dossier, meme si je mets le chemin entier!
dubcek 17178 Messages postés lundi 15 janvier 2007Date d'inscriptionContributeurStatut 10 décembre 2017 Dernière intervention - 28 mai 2008 à 10:27
0
Utile
2
comme ca ?:
ftp linus << EOD
cd test
autres commandes ftp
quit
EOD

ce cd est une commande ftp, pas shell
oui j'ai essayé avec EOF dans la journée et ca y est ca fonctionne niquel merci bcp pour l'astuce^^
bon maintenant que j'ai réussi ca, on m'a rajouter encore une difficulté supplémentaire, faut que je range au travers de mon script, les fichiers que j'ai transféré dans des dossiers portants comme nom le mois en cours et que les fichiers soit renommé avec la date!..... comme on dit " qu'en y'en a plus, y'en a encore!!! " grrr
EOD pardon faute de frappe, c'est la fatigue! ^^