IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes POSIX Discussion :

Un appel au SFTP sous expect qui fonctionne plus [KSH]


Sujet :

Shell et commandes POSIX

  1. #1
    Membre éclairé
    Homme Profil pro
    Indépendant spécialiste Cognos/Essbase
    Inscrit en
    Août 2008
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant spécialiste Cognos/Essbase
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2008
    Messages : 384
    Par défaut Un appel au SFTP sous expect qui fonctionne plus
    Bon,

    ça avance, c'est laborieux mais on va finir par y arriver. Un pas en avant deux en arrière.

    Dans une version plus simple de ce même script ci-dessous, la partie SFTP et expect fonctionnait. Mais toute la partie d'analyse avant, non. Maintenant c'est le contraire. La partie d'analyse et praparatoire fonctionne mais plus la partie SFTP/expect.

    Je ne sais pas le biais que j'ai introduit dans la partie préparatoire qui fait que ça ne fonctionne plus a partir de la ligne 48.

    Je me prends un message d'erreur :
    ./test5.ksh[38]: syntax error at line 49 : `<' unmatched
    Pouvez vous me filer de nouveau un coup de main messieurs ? Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    #!/bin/ksh
    echo "\n"
    echo "\n"
    echo "*************************************************************************"
    echo "*    Bienvenu dans le script de lancement des cubes     *"
    echo "*************************************************************************"
    echo "\n"
    echo "Sélectionnez le ou les cube(s) que vous souhaitez lancer séparé(s) par des ESPACES"
    echo "Pour AAAAF tapez F,"
    echo "Pour AAAAE tapez E,"
    echo "Pour AAAAM tapez M,"
    echo "Pour AAAAQ tapez Q,"
    echo "Tous les cubes tapez *,"
    echo "Une selection de cubes tapez les lettres correspondant de chaque cube"
    echo "C'est à vous :"
    read RESP
    set -A cube $RESP
    #toute valeur assignée à la variable i est mise en majuscule
    typeset -u i
     
    #Si la personne veut alimenter tous les cubes en une fois
    #changement de l'assignation de l'utilisateur par les
    #suffixes des cubes pour pouvoir boucler dessus
    if [ ${cube[0]} == * ]; then 
        echo "Vous voulez lancer tous les cubes ?"
        echo "Confirmez y/n ? :"
        read RESP_CONF
        if [ "$RESP_CONF" = "y" ]||[ "$RESP_CONF" = "Y" ]; then
          set -A cube F E M Q
          #echo "${cube[*]}"
        else
          echo "Veuillez relancer le script"
          exit;
        fi
    fi 
    ##Test si rien n'est renseigné par l'utilisateur
    RET_cube=${#cube[*]}
    if [ $RET_cube == 0 ]; then
      echo "!!!!!! Veuillez selectionner au moins un cube !!!!!!!\n"
      exit;
    else   
      for i in ${cube[@]}
      do
        case "$i" in 
          "F"|"E"|"M"|"Q")
            cd /home/ess_tms/temp/AAAA$i 
     
            #Début du script SFTP sous expect
            /usr/bin/expect <<'EOF'
            set timeout 5
            set USER user
            set PASS datastage
            set HOST mon_host
            #positionnement dans le répertoire source du serveur Informatica où les fichiers sont présents
            set INF_PATH_OUT /sldbfil2/data/mutualise/out/tms/TgtFiles
            spawn sftp $USER@$HOST
            expect password:
            send "$PASS\r"
     
            expect sftp>
            #Positionnement dans le dossier où le fichiers doivent être déposés par le STFP et à partir duquel le .ksh doit être exéxuté
            send "cd $INF_PATH_OUT/AAAA$i\r" 
     
            expect sftp>
            send "get *.txt\r"
     
            expect sftp>
            send "exit\r"
            EOF
     
            rm -f /home/ess_tms/temp/AAAA$i/*.gz
            mv /home/ess_tms/temp/AAAA$i/TMSMDAI.txt /home/ess_tms/temp/AAAA$i/DB_IND.txt ;;
            #etc... avec plein d'autres fichiers 
            #touch creation_ok_$i.txt ;;
          *) 
            echo "VA CHIER" ;;
        esac
      done
    fi
    exit;
    Moi je dis pas, mais pour vous ça vous paraitra simple comme script mais pour un mec qui n'a presque jamais touché à du shell avant, je trouve ca pas mal. Suis pas peu fier.
    J'ai bien le doirt de m'envoyer des fleurs, non ?

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Je pense que la solution est donnée dans cet autre thread

    Par contre tu devrais t'intéresser aux fonctions, qui me sembleraient plus appropriées dans ton cas...

  3. #3
    Membre éclairé
    Homme Profil pro
    Indépendant spécialiste Cognos/Essbase
    Inscrit en
    Août 2008
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant spécialiste Cognos/Essbase
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2008
    Messages : 384
    Par défaut
    Par contre tu devrais t'intéresser aux fonctions, qui me sembleraient plus appropriées dans ton cas...
    Je creuserai mais chaque chose en son temps. C'est, en l'état deja assez complexe pour moi, alors si je passe immédiatement du solex à la Ducati 900ss, je pense que y'en a qui risquent de faire la gueule.

  4. #4
    Membre éclairé
    Homme Profil pro
    Indépendant spécialiste Cognos/Essbase
    Inscrit en
    Août 2008
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant spécialiste Cognos/Essbase
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2008
    Messages : 384
    Par défaut
    C'est à cause de l'indentation de l'expect que ca ne fonctionnait plus. Du coup je l'ai viré.

    Pfff.... C'est vraiment touchy, à l'espace près...

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    Pfff.... emacs (ou n'importe quel éditeur (suffisamment) intelligent) l'aurait tout de suite mis en évidence (voire, en couleur!)!

    Et il ne l'aurait jamais indenté de manière inappropriée...
    Images attachées Images attachées  

  6. #6
    Membre éclairé
    Homme Profil pro
    Indépendant spécialiste Cognos/Essbase
    Inscrit en
    Août 2008
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant spécialiste Cognos/Essbase
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2008
    Messages : 384
    Par défaut
    Ouhla...J'en suis pas encore à disposer d'un editeur dédié. Je savais même pas que ca existait.
    Moi je fais ça sous UltraEdit avec de la coloration syntaxique. C'est tout.

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    Citation Envoyé par mederik Voir le message
    Ouhla...J'en suis pas encore à disposer d'un editeur dédié. Je savais même pas que ca existait.
    Euh... emacs n'est pas exactement un éditeur dédié. C'est même plutôt l'un des éditeurs les plus généralistes (et, accessoirement, l'un des plus vieux et des plus puissants!). Mais c'est vrai qu'il peut être vu comme dédié... mais dédié à tous les langages existants et bien d'autres...

    Et, bien que sa cible de prédilection ait longtemps été Unix, il tourne très bien sous windoze... (et, bien sûr, linux (ainsi que macOS (ainsi qu'en atteste la copie d'écran)))

    Moi je fais ça sous UltraEdit avec de la coloration syntaxique. C'est tout.
    Sa coloration syntaxique t'a-t-elle montré (comme emacs) que le '<<EOF' n'est pas (correctement) fermé?

  8. #8
    Membre éclairé
    Homme Profil pro
    Indépendant spécialiste Cognos/Essbase
    Inscrit en
    Août 2008
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant spécialiste Cognos/Essbase
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2008
    Messages : 384
    Par défaut
    Sa coloration syntaxique t'a-t-elle montré (comme emacs) que le '<<EOF' n'est pas (correctement) fermé?
    heu....je crois que non. Enfin il me semble qu'il ne me dise rien qui soit anormal... (Cf pj, Cc d'écran de UE)
    Tu vois qqchose d'anormale dans la coloration syntaxique ? Moi non.
    Images attachées Images attachées  

  9. #9
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    Là, tu montres une copie d'écran où le EOF final est CORRECTEMENT indenté.
    Il est donc normal qu'il n'apparaisse pas d'anomalie (c'est clair?).
    De plus, manifestement, UE ne colorise pas les heredocs

    Dans ma copie, emacs met en orange tout le "heredoc" qui commence à la ligne juste après le "<<'EOF'".

    On voit donc que la ligne rm -f /home/ess_tms/temp/AAAA$i/*.gz que l'on voudrait être après la fin du heredoc ne prend pas une couleur normale d'instruction shell, mais qu'elle est considérée comme faisant partie du heredoc... car celui-ci ne s'est pas terminé au 'EOF' de la ligne précédente... car ce EOF est indenté... Ouf! (des phrases courtes, ma chérie!)

    Conclusion: dans ce genre de situation, emacs met la puce à l'oreille!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Executer un jar sous Linux qui fonctionne sous Windows ?
    Par grenoult dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 23/01/2012, 18h11
  2. refresh sous Ajax ne fonctionne plus
    Par djo007 dans le forum jQuery
    Réponses: 2
    Dernier message: 23/01/2010, 01h54
  3. Pourquoi le debug de GWT sous Eclipse ne fonctionne plus ?
    Par benwit dans le forum GWT et Vaadin
    Réponses: 2
    Dernier message: 27/10/2009, 10h09
  4. code vba qui fonctionnes plus du jour au lendemain
    Par alexkickstand dans le forum VBA Access
    Réponses: 1
    Dernier message: 29/07/2008, 16h41
  5. mes requetes sous access ne fonctionnent plus
    Par trialrofr dans le forum ASP
    Réponses: 12
    Dernier message: 04/12/2004, 21h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo