Probleme d'automatisation de transfert ftp

Résolu
dolu95 -  
 dolu95 -
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

....
Configuration: Windows XP
Firefox 2.0.0.13

6 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
    0
    1. dolu95
       
      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.
      0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
    0
    1. dolu95
       
      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! :'(
      0
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > dolu95
         
        Est-ce que ton script commence bien par "#!/usr/bin/expect -f" ? (enfin faut adapter le chemin vers expect peut être)
        0
      2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > dolu95
         
        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]$  
        ;-))
        0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    je parlais de .netrc, fichier qui permet d'automatiser des logins et commandes ftp, voir man ftp
    0
    1. dolu95
       
      oui oui j'ai bien compris mais il y est pas. c'est bien dans /home/compte ?
      0
    2. dolu95
       
      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]
      $
      0
  4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    !! mails il faut le créer !!! alors ftp le lira
    qu'est ce qui ne marche pas avec ftp serveur << EOD ?
    0
    1. dolu95
       
      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! :$
      0
    2. dolu95
       
      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):
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    echo n'est pas une commande ftp
    est ce que ca marche manuellement

    ftp linus
    user lecl dol
    dir
    0
    1. dolu95
       
      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é.
      0
    2. dolu95
       
      j'viens de créer le fichier .netrc, j'vais fumer une clope et je test apres j'te donne des nouvelles!
      0
    3. dolu95
       
      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!!
      0
    4. dolu95
       
      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!
      0
  7. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    comme ca ?:
    ftp linus << EOD
    cd test
    autres commandes ftp
    quit
    EOD

    ce cd est une commande ftp, pas shell
    0
    1. dolu95
       
      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
      0
    2. dolu95
       
      EOD pardon faute de frappe, c'est la fatigue! ^^
      0