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

API standards et tierces Java Discussion :

[JSch] Non exécution script possédant des variables d'environnement


Sujet :

API standards et tierces Java

  1. #1
    Membre confirmé Avatar de Kihmé Xs
    Inscrit en
    Janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2007
    Messages : 549
    Points : 491
    Points
    491
    Par défaut [JSch] Non exécution script possédant des variables d'environnement
    Bonjour à tous,

    En utilisant l'API JSch j'ai remarqué que si je tente d'exécuter un script à distance possédant des variables environnements alors l'exécution ne fonctionne pas.

    Pour localiser le problème j'ai tout d'abord écrit un script shell possédant des variables environnements. L'exécution ne se faisait pas. J'ai ensuite remplacé les variables environnements par les chemins absolus qu'elles représentent et là l'exécution a fonctionné.

    Deux questions me viennent donc à l'esprit :

    - Existe t'il une propriété à initialiser qui ferait que les variables environnements puissent être lus?

    ou alors

    - Existe t'il une méthode permettant de récupérer les définitions des variables environnements (sur le serveur Unix) et les ajouter à ma session ou mon channel pour qu'elles puissent être interprétées?

    J'ai cherché dans les classes et regardé les exemples fournis dans la doc mais je n'ai rien repéré de la sorte.

    Sur le forum j'ai trouvé ceci : config SSH

    Mais je cherche un moyen de faire ça sans toucher au post client, je tiens absolument à ce que l'application récupère les variables dynamiquement si elle doit les récupérer.

    Merci pour toute aide éventuelle,

  2. #2
    Membre confirmé Avatar de Kihmé Xs
    Inscrit en
    Janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2007
    Messages : 549
    Points : 491
    Points
    491
    Par défaut
    Après une conversation avec un membre de l'équipe ayant développé JSCh je suis en mesure de me répondre.

    Lors des connexions au serveur le profile n'est pas chargé. Or c'est souvent ce profile qui contient les définitions des variables environnements. Si il ne les contient pas il possède surement le path pour aller là où elles le sont et alors elles seront chargées comme si elles étaient dans le profile.

    Pour ce faire, avant la commande d’exécution de votre script il faut charger le profile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //initialisation de la commande à executer
                String command = ". ~/.profile ; /chemin/chemin/nomfichier.sh param1 param2 param3 param4";
                Channel channel=session.openChannel("exec");
                ((ChannelExec)channel).setCommand(command);

  3. #3
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Août 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Août 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Kihmé Xs Voir le message
    Après une conversation avec un membre de l'équipe ayant développé JSCh je suis en mesure de me répondre.

    Lors des connexions au serveur le profile n'est pas chargé. Or c'est souvent ce profile qui contient les définitions des variables environnements. Si il ne les contient pas il possède surement le path pour aller là où elles le sont et alors elles seront chargées comme si elles étaient dans le profile.

    Pour ce faire, avant la commande d’exécution de votre script il faut charger le profile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //initialisation de la commande à executer
                String command = ". ~/.profile ; /chemin/chemin/nomfichier.sh param1 param2 param3 param4";
                Channel channel=session.openChannel("exec");
                ((ChannelExec)channel).setCommand(command);


    Salut j'ai le même souci que toi! je dois executer un script perl sur un serveur distant mais sans succès, le script ne s'exécute pas alor que j'ai bien la valeur "exit-status" à 0. J'ai essayé d'essayer de faire comme tu le dis charger les profiles mais sans succès toujours le même résultats.

    As-tu fais autre chose qui pourrait résoudre mon problème? as-tu changer certains paramètres sur ton serveur distant,...?

    Merci d'avance pour ta réponse

  4. #4
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Août 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Août 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par djo G. Voir le message
    Salut j'ai le même souci que toi! je dois executer un script perl sur un serveur distant mais sans succès, le script ne s'exécute pas alor que j'ai bien la valeur "exit-status" à 0. J'ai essayé d'essayer de faire comme tu le dis charger les profiles mais sans succès toujours le même résultats.

    As-tu fais autre chose qui pourrait résoudre mon problème? as-tu changer certains paramètres sur ton serveur distant,...?

    Merci d'avance pour ta réponse
    En fait c'est bon j'ai trouvé mon souci

    Pour charger les profils j'utilise plutôt cette ligne de commande là:

    String command = ". /home/sfux/.bash_profile;"

    Merci encore pour le tuyau des profils ça m'a beaucoup aidé

    A bientot

  5. #5
    Membre confirmé Avatar de Kihmé Xs
    Inscrit en
    Janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2007
    Messages : 549
    Points : 491
    Points
    491
    Par défaut
    content d'avoir pu t'aider^^

    Une fois cette étape passée on comprend la puissance de l'api. Il te suffit juste de prévoir ton appli (si tu en as une) pour générer les commandes unix, l'api les execute toutes. Même pour récupérer les sorties c'est un jeu d'enfant^^

    have fun

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

Discussions similaires

  1. Script shell pour exécuter script sql avec variable
    Par Thibault69009 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 22/08/2014, 15h39
  2. Exécution GUI - Visibilité des variables utilisées
    Par sjunod dans le forum Interfaces Graphiques
    Réponses: 8
    Dernier message: 27/05/2009, 15h44
  3. Script : Insérer des variables Get
    Par Jimmy_S dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/12/2007, 12h18
  4. Réponses: 1
    Dernier message: 11/01/2007, 15h57
  5. Réponses: 4
    Dernier message: 18/07/2002, 13h32

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