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

Java Discussion :

lancer un script ksh avec exec


Sujet :

Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 161
    Points : 77
    Points
    77
    Par défaut lancer un script ksh avec exec
    Bonjour,
    J'ai besoin de lancer un script ksh à partir de mon appli Java, je suis sous Windows.
    Je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Runtime.getRuntime().exec("C:/toto.ksh");
    Cela me retourne :" %1 n'est pas une application Win32 valide"

    En fait les scripts ksh ne peuvent être lancés sous windows. Y-a-til un moyen pour le lancer sous windows (dans un .cmd?) ? Sinon je voudrait accéder à un serveur sun où est placé le script pour le lancer.
    J'ai vraiment aucune idée de comment on doit faire pour accéder au serveur sun et lancer mon executable.

    Merci pour votre aide.

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Si tu as un interprêteur de scripts, oui, ça doit être possible...

    1) Regarde du côté de Cygwin pour l'interprêteur sous Windows.
    2) Le cas échéant, tente de convertir ton script en un batch windows.
    3) Fais une recherche avant de poster une question déjà traitée... L'utilisation de "Runtime.exec()" est abordée en long en large et en travers sur les forums java!

  3. #3
    Membre éclairé Avatar de rberthou
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 612
    Points : 690
    Points
    690
    Par défaut
    Avant tout où doit normalement s'exécuter ton script sur le serveur Unix ou sur le poste du client ?

    Si c'est sur le poste du client essaye de faire un script équivalent en ".cmd ou .bat"

    Si c est sur le serveur regarde du coté des exécutions remotes via ssh

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 161
    Points : 77
    Points
    77
    Par défaut
    En fait l'ideal est de lancer à partir de la machine distante sur sun.

    Pour le moment j'arrive a me connecter à la machine distante grâce à putty
    putty.exe -ssh -2 -P 22 toto@ip -m commande.txt

    Ensuite dans commande.txt je met le chemin de mon script ksh :
    ./toto/toto.ksh

    Mais ca ne fonctionne pas il me lance bien le fichier commande.txt mais si je met un repertoire non valide dans le commande.txt il ne m'indique rien de plus. J'ai vu cet exemple sur un forum mais je ne trouve pas vraiment d'exemple de ce qu'il faut mettre dans le commande.txt

  5. #5
    Membre éclairé Avatar de rberthou
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 612
    Points : 690
    Points
    690
    Par défaut
    Regarde plus du cote de plink (outils de putty)

    plink.exe -ssh -pw pass -noagent -m commands.txt user-at-10.0.0.2

    http://www.g3l.org/forum/viewtopic.php?pid=51

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 161
    Points : 77
    Points
    77
    Par défaut
    Merci, ca marche bien, il arrive à lancer le ksh, le seul problème est que lorsque je lance mon ksh sous le serveur sun, mon script fonctionne. Lorsque je lance mon script à partir de la ligne de commande plink .... le script me renvoie un message d'erreur.
    Je ne sait pas trop d'où ca vient mais en tout cas le script est bien lancé, c'est le principal, je vais essayer de regler ce problème maintenant.

  7. #7
    Membre éclairé Avatar de rberthou
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 612
    Points : 690
    Points
    690
    Par défaut
    Regarde du coté de l'initialisation des variables d'env. Cela ne dois pas être fait par un remote script.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 161
    Points : 77
    Points
    77
    Par défaut
    Merci de ta réponse, en fait dans mon script ksh que je lance à distance, il utilise des script sh en les appelant "./toto.sh" et il n'arrive pas a les lancer à distance alors que quand je suis sur la machine cela fonctionne.

    Je ne sait pas comment faire pour que les variables d'environnement soient les même quand je le lance à distance que quand je suis en local sur la machine.

  9. #9
    Membre éclairé Avatar de rberthou
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 612
    Points : 690
    Points
    690
    Par défaut
    Essaye d'avoir plus d'informations sur l'erreur produite.

    Pour les variables d'environnement regarde ce qui est initialisé dans ton ".profile" (.bash_profile, ou autre).
    Je pense par exemple que le PATH n'est pas affecté , pas d'init d'environnement base de données (le cas de DB2 entre autre), vérifie le répertoire courant, ...

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 161
    Points : 77
    Points
    77
    Par défaut
    En fait le PATH était bien initialisé mais n'était pas le même que celui qui était lorsque je me connectai en local.
    J'ai donc copié mon path que j'avais en local et aussi la variable ORACLE_HOME que j'avais besoin dans le script et maintenant ca fonctionne.

    Je met en résumé mon Commande.txt pour ceux que ca interessent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PATH=....
    export ORACLE_HOME=....
    cd /cheminduKSH/
    ./monksh.ksh
    Le export c'est parceque elle n'existait pas la variable d'env alors que la variable PATH existait déjà.

    Merci de ton aide

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 161
    Points : 77
    Points
    77
    Par défaut
    En fait je me suis réjoui un peu trop vite, cela fonctionne quand je lance à partir de cmd de windows mais lorsque je le fait en Java avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Runtime.getRuntime().exec("C:/workspace/src/Script/putty -ssh -pw pass -m Commande.txt user@hote");
    Il me met can't open Commande.txt .

    Je ne sais pas trop où positionner ce fichier, je l'est mis dans le même repertoire que putty

    Quand je lance à partir de windows avec une fenêtre dos la ligne de commande identique avec le repertoire cela fonctionne parfaitement. QUant c'est avec Java il ne veut pas m'ouvrir le Commande.txt


    Edit : En fait il suffisait de rajouter le chemin egalement au niveau de Commande.txt car le Runtime.getRuntime est situé sur le serveur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Runtime.getRuntime().exec("C:/workspace/src/Script/putty -ssh -pw pass -m C:/workspace/src/Script/Commande.txt user@hote");

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

Discussions similaires

  1. Lancer un fichier php avec exec() ou similaires
    Par jeremm dans le forum Langage
    Réponses: 9
    Dernier message: 12/01/2011, 22h26
  2. Lancer un script shell avec php
    Par jojo971 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 12/10/2010, 10h15
  3. [PHP 5.3] Lancer un script php avec la fonction exec
    Par Poukie dans le forum Langage
    Réponses: 1
    Dernier message: 04/10/2009, 10h42
  4. [Mail] Lancer un script PHP avec un e-mail
    Par vence dans le forum Langage
    Réponses: 3
    Dernier message: 16/10/2008, 13h30
  5. [Système] Lancer un script perl avec PHP
    Par pepite dans le forum Langage
    Réponses: 2
    Dernier message: 09/01/2006, 12h30

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