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 :

Fichiers incomplets et/ou tronqués après SFTP


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 Fichiers incomplets et/ou tronqués après SFTP
    Bonjour,

    avez vous une idée de ce qui pourrait causer le probleme suivant, plutot vachement emmerdant et inatendu.

    J'ai deux serveur : A et B.
    Sur le serveur A je génére des fichiers plats. Puis je transfere ces fichiers plats par SFTP via un ksh grâce à un spawn et expect.

    90% de mes fichiers sont incomplets après le SFTP. LE SFTP semble corrompre mes fichiers.

    Pourtant dans la fenêtre, il n'y a aucun message ou indication qui laisserait penser que le transfert n'a pas été fait ou incomplet.

    Avez vous une idée ?

    Merci d'avance

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Citation Envoyé par mederik Voir le message
    Bonjour,

    90% de mes fichiers sont incomplets après le SFTP. LE SFTP semble corrompre mes fichiers.

    Avez vous une idée ?

    Merci d'avance
    avec un taux d'erreur aussi élevé, il faut repartir de zéro et tester les transferts en "commandes FTP" natives sans script autour


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sftp -i you@truc << EOT
    cd truc
    get bidule
    cd ../machin
    get machin
    ...
    bye
    EOT
    Si là ça marche tu peux éliminer toute hypothèse coté serveur FTP ainsi que coté réseau et c'est donc ton script qui chie...pote...
    à l'inverse si là ça chie c'est forcément coté réseau et/ou serveur que se pose ton problème.

    Probablement un timeout de session lié au mode de connexion avec ces conneries d"expect ou le spawn.

  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
    Bon j'ai fais ce que tu m'as dit. J'ai trouvé où ça déconnait. Je ne comprends pas pourquoi mais j'ai trouvé.

    Voici le bout de script complet
    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
    #!/bin/ksh
    echo "\n"
    echo "************************************************************************"
    echo "*   JTMS$i : connection SSH pour lancement génération fichiers plats    *"
    echo "************************************************************************"
    echo "\n"  
    sleep 2    
    /usr/bin/expect <<EOF
    set timeout 5
    set USER user
    set PASS datastage
    set HOST serveur
    set INF_PATH_KSH mon_chemin/Param
    set INF_PATH_OUT mon_chemin/TgtFiles
     
    #connection SSH pour lancement des scripts de génération des fichiers des cubes
    spawn ssh \$USER@\$HOST
    expect password:
    send "\$PASS\r"
    expect $
    send "cd \$INF_PATH_KSH\r"
    expect $
    send "./JTMSF.ksh\r"
    expect $
    send "exit\r"
     
    #connection SFTP pour rapatrier les fichiers générés en FTP sur serveur local
    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\JTMSF\r" 
       
    expect sftp>
    send "get *.txt\r"
     
    expect sftp>
    send "exit\r"
    EOF
    Dans ce qui script il y a deux spawn expect qui se suivent : un premier pour lancer un ksh et un deuxième pour du SFTP.

    Quand je supprime la partie spawn expect SSH, le SFTP fonctionne tres bien. Dès que je les mets à la suite, SFTP foire.

    Quelqu'un sait pourquoi ?

  4. #4
    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
    Juste pour éliminer une éventualité (au cas où...).

    Si ton script './JTMSF.ksh' de génération des fichiers des cubes travaille en background, il n'aura peut-être pas fini de générer les fichiers au moment du transfert!

    Peux-tu essayer d'insérer une ligne pour voir le contenu du répertoire après exécution du script, afin de vérifier que les fichiers sont bien complets:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    expect $
    send "./JTMSF.ksh\r"
    expect $
    send "ls -lR JTMSF > /tmp/ls-lR-JTMSF\r"
    send "exit\r"

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 352
    Par défaut
    Bonjour,

    Ou bien, mieux écrire les commandes expect $ car le caractère '$' peut avoir d'autre signification que le '$' comme par exemple fin de ligne (ou fin de bloc en expect)...

    Et donc, comme le dit Jack-ft, la commande n'est pas fini lors du sftp

  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
    'tain..... @&$%#

    Mais qu'est-ce t'as fait ?!? C'est quoi cet ordre avec un ls en plus. Apparemment en ajoutant ça ca fonctionne effectivement. J'ai testé deux fois de suite avec et sans pour vérifier mais ca a bien l'air de corriger le truc.

    Tu peux m'expliquer stp ?

  7. #7
    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
    Bon, fausse joie....
    Tu devais t'en douter peut être.
    Ca fonctionne pour mon fichier test mais pas pour les autres...
    pffff

  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
    En fait je crois je suis coinçé par la structure de mon ksh. Je pense que je ne peux pas récupérer dans mon ksh le code retour des ksh qui sont lançés sur les machines distantes à cause du spawn...

    L'enchainement des lancements est le suivant :
    ksh_mère > script_1 > script-2

    Le ksh "script_2" envoi bien un code retour mais, comme je le disais, il est exécuté via script_1.

    script_1 et script2 sont sur une autre machine que ksh_mère...

    C'est le binz quoi...Je vois pas de solution

  9. #9
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 352
    Par défaut
    Essaye le code suivant:
    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
    #!/bin/ksh
    echo "\n"
    echo "************************************************************************"
    echo "*   JTMS$i : connection SSH pour lancement génération fichiers plats    *"
    echo "************************************************************************"
    echo "\n"  
    sleep 2    
    /usr/bin/expect <<EOF
    set timeout 5
    set USER user
    set PASS datastage
    set HOST serveur
    set INF_PATH_KSH mon_chemin/Param
    set INF_PATH_OUT mon_chemin/TgtFiles
     
    #connection SSH pour lancement des scripts de génération des fichiers des cubes
    spawn ssh \$USER@\$HOST
    expect password:
    send "\$PASS\r"
    expect '$'
    send "cd \$INF_PATH_KSH\r"
    expect '$'
    send "./JTMSF.ksh\r"
    expect '$'
    send "exit\r"
    expect eof
     
    #connection SFTP pour rapatrier les fichiers générés en FTP sur serveur local
    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\JTMSF\r" 
       
    expect sftp>
    send "get *.txt\r"
     
    expect sftp>
    send "exit\r"
    expect eof
    EOF

  10. #10
    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
    Désolé, je n'ai pas grand-chose à proposer...

    Une question bête:
    Ne pourrais-tu truster tes machines?
    De cette manière, tu pourrais faire des vrais appels à 'ssh' et 'scp' qui me paraissent plus simples à gérer que les scripts 'expect'.

    De plus, le fait de mettre des mots de passe en clair dans des scripts ne passerait jamais les contraintes de sécurité de pas mal de boîtes où j'ai travaillé!

Discussions similaires

  1. [SQL 2K] Fichier de LOG gros même aprés sauvegarde
    Par dens19 dans le forum Administration
    Réponses: 11
    Dernier message: 19/11/2009, 16h02
  2. Fichier .bat qui s'arrête après une commande
    Par VinnieMc dans le forum Administration
    Réponses: 6
    Dernier message: 28/08/2008, 18h17
  3. Upload de fichiers incomplet
    Par fastlock dans le forum W4 Express
    Réponses: 1
    Dernier message: 03/03/2008, 12h02
  4. Ouvrir document mais nom du fichier incomplet
    Par ljiang dans le forum 4D
    Réponses: 1
    Dernier message: 22/09/2006, 14h04
  5. [Debutant]Nom de fichiers incomplets
    Par Drizzt [Drone38] dans le forum MFC
    Réponses: 3
    Dernier message: 04/06/2004, 16h33

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