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

EDI et Outils pour Java Discussion :

erreur sur execution d'un script externe à l'application java.


Sujet :

EDI et Outils pour Java

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut erreur sur execution d'un script externe à l'application java.
    Bonjour

    Je n'arrive pas à exécuter un petit script shell à partir de mon application java.

    Lorsque j'ouvre une connexion avec le serveur unix avec telnet et je lance le script, il marche bien. Mais pas à partir de l'application java.

    Les droits du script sont rwx rwx rwx

    Voici le début du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     // connection
                ftpbean.ftpConnect(hostname, login, password);
                // changement de répertoire
                ftpbean.setDirectory(path);                
                System.out.println("Changement de répertoire OK");
     
     
                //=====================================================
                Runtime runtime = Runtime.getRuntime();
                Process process = Runtime.getRuntime().exec(new String[] { "titi.sh*" , "ABC" } );

    et voici le code d'erreur :

    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
    init:
    deps-jar:
    Compiling 1 source file to C:\Documents and Settings\.............
    compile:
    run:
    Changement de répertoire OK
    Une erreur de communication avec le serveur distant a eu lieu:
    java.io.IOException: Cannot run program "titi.sh*": CreateProcess error=2, The system cannot find the file specified
         at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
            at java.lang.Runtime.exec(Runtime.java:593)
            at java.lang.Runtime.exec(Runtime.java:466)
            at val_diamonds2.MyFtpClient.Go(MyFtpClient.java:41)
            at val_diamonds2.MyFtpClient.main(MyFtpClient.java:22)
    Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
         at java.lang.ProcessImpl.create(Native Method)
            at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
            at java.lang.ProcessImpl.start(ProcessImpl.java:30)
            at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
            ... 4 more
    BUILD SUCCESSFUL (total time: 2 seconds)
    Merci de votre aide.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 958
    Points : 4 387
    Points
    4 387
    Par défaut
    Citation Envoyé par diamonds
    Bonjour

    [code] // connection
    ftpbean.ftpConnect(hostname, login, password);
    // changement de répertoire
    ftpbean.setDirectory(path);
    [code]
    une connection FTP pour exécuter une commande sur l'hôte distant ?

    si vous voulez exécutez une commande via telnet, il faudrait commencer par ouvrir une session telnet avec l'hôte distant et non une connection ftp…

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par JeitEmgie
    une connection FTP pour exécuter une commande sur l'hôte distant ?

    si vous voulez exécutez une commande via telnet, il faudrait commencer par ouvrir une session telnet avec l'hôte distant et non une connection ftp…
    C'est parce que je veux faire les deux dans le même programme.

    Je veux éxécuter un script et aussi télechargé un fichier.

    Faut-il alors ouvrir deux connections ? une ftp et l'autre telnet ?

    comment ouvrir une connexion telnet à partir de java ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 958
    Points : 4 387
    Points
    4 387
    Par défaut
    Citation Envoyé par diamonds
    C'est parce que je veux faire les deux dans le même programme.

    Je veux éxécuter un script et aussi télechargé un fichier.

    Faut-il alors ouvrir deux connections ? une ftp et l'autre telnet ?

    comment ouvrir une connexion telnet à partir de java ?
    dans le protocole FTP la commande ! permet d'invoquer une commande sur l'hôte et c'est la méthode "execute" de FTPBean qui permet de l'invoquer :

    ftpBean.execute("titi.sh");

    donc il n'est pas nécessaire d'ouvrir une session shell via telnet, ce qui de toute façon n'est pas recommandé question sécurité…
    et
    Runtime c'est pour exécuter une commande sur la machine locale pas sur le serveur…

  5. #5
    Membre éprouvé Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Points : 1 210
    Points
    1 210
    Par défaut
    The system cannot find the file specified
    Il trouve pas le fichier, C'est le bon nom du script ?

  6. #6
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par gnto
    Il trouve pas le fichier, C'est le bon nom du script ?
    oui biensûr !

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par JeitEmgie
    dans le protocole FTP la commande ! permet d'invoquer une commande sur l'hôte et c'est la méthode "execute" de FTPBean qui permet de l'invoquer :

    ftpBean.execute("titi.sh");

    donc il n'est pas nécessaire d'ouvrir une session shell via telnet, ce qui de toute façon n'est pas recommandé question sécurité…
    et
    Runtime c'est pour exécuter une commande sur la machine locale pas sur le serveur…
    voici ce que ça donne avec ftpbean.execute("titi.sh");

    Changement de répertoire OK
    Affichage du contenu du répertoire et transfert du premier fichier qui n'est pas un répertoire
    ftp.FtpException: 502 SITE command not implemented.
    une erreur FTP a eu lieu:
    at ftp.FtpBean.getRespond(FtpBean.java:1393)
    at ftp.FtpBean.ftpCommand(FtpBean.java:1445)
    at ftp.FtpBean.execute(FtpBean.java:1187)

  8. #8
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 958
    Points : 4 387
    Points
    4 387
    Par défaut
    Citation Envoyé par diamonds
    voici ce que ça donne avec ftpbean.execute("titi.sh");
    votre serveur vous répond qu'il ne supporte pas la commande "!"…

    vous ne pouvez pas utiliser FTP avec ce serveur pour ce que vous voulez faire…
    il faudra donc passer par une connection ssh…

  9. #9
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par JeitEmgie
    votre serveur vous répond qu'il ne supporte pas la commande "!"…

    vous ne pouvez pas utiliser FTP avec ce serveur pour ce que vous voulez faire…
    il faudra donc passer par une connection ssh…
    Je n'ai pas utilisé la commande ! nulle part.
    voici mes deux lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Runtime runtime = Runtime.getRuntime();
    Runtime.getRuntime().exec(new String[] { "ls"} );
    y a t-il un exemple déjà fait (code en java) avec une connexion SSH ?

  10. #10
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 958
    Points : 4 387
    Points
    4 387
    Par défaut
    Citation Envoyé par diamonds
    Je n'ai pas utilisé la commande ! nulle part.
    voici mes deux lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Runtime runtime = Runtime.getRuntime();
    Runtime.getRuntime().exec(new String[] { "ls"} );
    y a t-il un exemple déjà fait (code en java) avec une connexion SSH ?
    la commande "!" est implicite à l'exécution de ftpBean.exec()…
    (c'est la commande que exec va appeler sur le serveur FTP pour exécuter ce que vous passer en paramètre à exec…)

    Runtime.exec exécute la commande sur la machine locale pas sur le serveur !

    il y a certainement un exemple SSH en Java quelque part sur ce site, car cela serait étonnant que vous soyez le premier à poser la question…

  11. #11
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par JeitEmgie
    il y a certainement un exemple SSH en Java quelque part sur ce site, car cela serait étonnant que vous soyez le premier à poser la question…
    Je n'arrive pas à trouver d'exemple comparable à ce que je cherche. Si tu en connais un , ça serait apprécié.

    N'importe quel type de connexion qui me permettrait d'executer un script shell sur une machine unix à partir d'une machine windows.

    Merci.

  12. #12
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par diamonds
    Je n'arrive pas à trouver d'exemple comparable à ce que je cherche. Si tu en connais un , ça serait apprécié.

    N'importe quel type de connexion qui me permettrait d'executer un script shell sur une machine unix à partir d'une machine windows.

    Merci.
    Voici un exemple que j'ai trouvé sur le forum, mais il me donne des erreurs.

    1) Package com.jcraft.jsch does not exist


    lorsque je fais alt + shift + F pour généré les import nécessaire, j'ai l'erreur suivante :

    No imports found for the folowing types :
    - Sesion
    - UserInfo
    - JSch

    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
    81
     
    import com.jcraft.jsch.*;
    import java.nio.channels.Channel;
    import javax.swing.*;
     
    public class Shell{
      public static void main(String[] arg){
     
        try{
          JSch jsch=new JSch();
    
          //jsch.setKnownHosts("/home/foo/.ssh/known_hosts");
     
          String host=JOptionPane.showInputDialog("Enter username@hostname",          System.getProperty("user.name")+
       "@localhost"); 
     
          String user=host.substring(0, host.indexOf('@'));
          host=host.substring(host.indexOf('@')+1);
     
          Session session=jsch.getSession(user, host, 22);
          //session.setPassword("your password");
     
          // username and password will be given via UserInfo interface.
          UserInfo ui=new MyUserInfo();
          session.setUserInfo(ui);
     
          //java.util.Hashtable config=new java.util.Hashtable();
          //config.put("StrictHostKeyChecking", "no");
          //session.setConfig(config);
     
     
        session.connect();
     
             Channel channel=session.openChannel("shell");
     
             channel.setInputStream(System.in);
             channel.setOutputStream(System.out);
     
             channel.connect();
           }
           catch(Exception e){
             System.out.println(e);
           }
         }
     
      public static class MyUserInfo implements UserInfo{
        public String getPassword(){ return passwd; }
        public boolean promptYesNo(String str){
          Object[] options={ "yes", "no" };
          int foo=JOptionPane.showOptionDialog(null, 
                 str,
                 "Warning", 
                 JOptionPane.DEFAULT_OPTION, 
                 JOptionPane.WARNING_MESSAGE,
                 null, options, options[0]);
           return foo==0;
        }
     
        String passwd;
        JTextField passwordField=(JTextField)new JPasswordField(20);
     
        public String getPassphrase(){ return null; }
        public boolean promptPassphrase(String message){ return true; }
        public boolean promptPassword(String message){
          Object[] ob={passwordField}; 
          int result=
       JOptionPane.showConfirmDialog(null, ob, message,
         JOptionPane.OK_CANCEL_OPTION);
          if(result==JOptionPane.OK_OPTION){
     passwd=passwordField.getText();
     return true;
          }
          else{ return false; }
        }
        public void showMessage(String message){
          JOptionPane.showMessageDialog(null, message);
        }
      }
     
    }

  13. #13
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 958
    Points : 4 387
    Points
    4 387
    Par défaut
    Citation Envoyé par diamonds
    Voici un exemple que j'ai trouvé sur le forum, mais il me donne des erreurs.


    vous avez installé le jar et modifiez le classpath en conséquence ?

  14. #14
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par JeitEmgie
    vous avez installé le jar et modifiez le classpath en conséquence ?
    Oui je l'ai installé et voici le nouveau code qui ne contient pas d'erreurs, mais il ne fait rien visiblement.

    Il dit que la connexion est refusée sans donner plus de détails.

    voici la sortie de l'exécution

    init:
    deps-jar:
    Compiling 1 source file to C:\XXXXX\build\classes
    compile:
    run:
    com.jcraft.jsch.JSchException: java.net.ConnectException: Connection refused: connect
    BUILD SUCCESSFUL (total time: 4 seconds)
    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
     
    import com.jcraft.jsch.*;
    import javax.swing.JTextField;
     
    import java.awt.*;
    import javax.swing.*;
     
    public class UserAuthKI{
      public static void main(String[] arg){
     
        try{
          JSch jsch=new JSch();
     
          String host=JOptionPane.showInputDialog("Enter username@hostname",           System.getProperty("user.name")+ "@localhost");
     
          String user=host.substring(0, host.indexOf('@'));
          host=host.substring(host.indexOf('@')+1);
     
          Session session=jsch.getSession(user, host, 22);
     
          // username and passphrase will be given via UserInfo interface.
          UserInfo ui=new MyUserInfo();
          session.setUserInfo(ui);
          session.connect();
     
          Channel channel=session.openChannel("shell");
     
          channel.setInputStream(System.in);
          channel.setOutputStream(System.out);
     
          channel.connect();
     
          //channel.
        }
        catch(Exception e){
          System.out.println(e);
        }
      }
     
     
      public static class MyUserInfo implements UserInfo, UIKeyboardInteractive{
        public String getPassword(){ return passwd; }
        public boolean promptYesNo(String str){
          Object[] options={ "yes", "no" };
          int foo=JOptionPane.showOptionDialog(null, 
                 str,
                 "Warning", 
                 JOptionPane.DEFAULT_OPTION, 
                 JOptionPane.WARNING_MESSAGE,
                 null, options, options[0]);
           return foo==0;
        }
     
        String passwd;
        JTextField passwordField=(JTextField)new JPasswordField(20);
     
        public String getPassphrase(){ return null; }
        public boolean promptPassphrase(String message){ return false; }
        public boolean promptPassword(String message){
          Object[] ob={passwordField}; 
          int result=
       JOptionPane.showConfirmDialog(null, ob, message,
         JOptionPane.OK_CANCEL_OPTION);
          if(result==JOptionPane.OK_OPTION){
     passwd=passwordField.getText();
     return true;
          }
          else{ return false; }
        }
        public void showMessage(String message){
          JOptionPane.showMessageDialog(null, message);
        }
     
        final GridBagConstraints gbc = 
     new GridBagConstraints(0,0,1,1,1,1,
              GridBagConstraints.NORTHWEST,
              GridBagConstraints.NONE,
              new Insets(0,0,0,0),0,0);
        private Container panel;
        public String[] promptKeyboardInteractive(String destination,
               String name,
               String instruction,
               String[] prompt,
               boolean[] echo){
          panel = new JPanel();
          panel.setLayout(new GridBagLayout());
     
          gbc.weightx = 1.0;
          gbc.gridwidth = GridBagConstraints.REMAINDER;
          gbc.gridx = 0;
          panel.add(new JLabel(instruction), gbc);
          gbc.gridy++;
     
          gbc.gridwidth = GridBagConstraints.RELATIVE;
     
          JTextField[] texts=new JTextField[prompt.length];
          for(int i=0; i<prompt.length; i++){
     gbc.fill = GridBagConstraints.NONE;
     gbc.gridx = 0;
     gbc.weightx = 1;
     panel.add(new JLabel(prompt[i]),gbc);
     
     gbc.gridx = 1;
     gbc.fill = GridBagConstraints.HORIZONTAL;
     gbc.weighty = 1;
     if(echo[i]){
       texts[i]=new JTextField(20);
     }
     else{
       texts[i]=new JPasswordField(20);
     }
     panel.add(texts[i], gbc);
     gbc.gridy++;
          }
     
          if(JOptionPane.showConfirmDialog(null, panel, 
               destination+": "+name,
               JOptionPane.OK_CANCEL_OPTION,
               JOptionPane.QUESTION_MESSAGE)
      ==JOptionPane.OK_OPTION){
     String[] response=new String[prompt.length];
     for(int i=0; i<prompt.length; i++){
       response[i]=texts[i].getText();
     }
     return response;
          }
          else{
     return null;  // cancel
          }
        }
      }
    }

  15. #15
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 958
    Points : 4 387
    Points
    4 387
    Par défaut
    Citation Envoyé par diamonds
    Oui je l'ai installé et voici le nouveau code qui ne contient pas d'erreurs, mais il ne fait rien visiblement.

    j'ai testé l'exemple Shell fourni avec jsch et cela fonctionne très bien…


    ("accès refusé" : votre serveur a un accès ssh au moins ? )

  16. #16
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par JeitEmgie
    j'ai testé l'exemple Shell fourni avec jsch et cela fonctionne très bien…


    ("accès refusé" : votre serveur a un accès ssh au moins ? )
    comment puis-je vérifier si mon serveur a un accès SSH ou non ?

    Quels sont les autres informations que je dois demander à notre administrateur ?

  17. #17
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par JeitEmgie
    j'ai testé l'exemple Shell fourni avec jsch et cela fonctionne très bien…


    ("accès refusé" : votre serveur a un accès ssh au moins ? )
    as tu changé quelque chose dans le code ?

    Moi j'aimerais mieux hardcoder le nom du serveur dans le code et enlever la fenêtre input .

    Ca prend pas de mot de passe ?

  18. #18
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par JeitEmgie
    j'ai testé l'exemple Shell fourni avec jsch et cela fonctionne très bien…


    ("accès refusé" : votre serveur a un accès ssh au moins ? )
    Oui je viens d'essayer le programme avec un autre serveur qui a un accès SSH, et là il me demande de renter le localhost, pui il demande de rentrer le mot de passe, puis il reste gelé après 2005.

    voici la sortie

    init:
    deps-jar:
    Compiling 1 source file to C:\......\XXXX\build\classes
    compile:
    run:
    Last login: Thu Feb 25 10:38:34 2007 from ..........
    Sun Microsystems Inc. SunOS 5.10 Generic January 2005
    Il semble que la connexion se fait bien. mais après rien ne se passe.

    J'aimerais maintenant rajouter deux lignes pour exécuter un script nomé titi.sh se trouvant sur ce serveur.

    Est-ce la bonne syntaxe ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Runtime runtime = Runtime.getRuntime();
    Process process = Runtime.getRuntime().exec(new String[] { "titi.sh"} );

  19. #19
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 958
    Points : 4 387
    Points
    4 387
    Par défaut
    Citation Envoyé par diamonds
    Oui je viens d'essayer le programme avec un autre serveur qui a un accès SSH, et là il me demande de renter le localhost, pui il demande de rentrer le mot de passe, puis il reste gelé après 2005.

    voici la sortie



    Il semble que la connexion se fait bien. mais après rien ne se passe.

    J'aimerais maintenant rajouter deux lignes pour exécuter un script nomé titi.sh se trouvant sur ce serveur.

    Est-ce la bonne syntaxe ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Runtime runtime = Runtime.getRuntime();
    Process process = Runtime.getRuntime().exec(new String[] { "titi.sh"} );
    RE:
    Runtime exécute la commande sur la machine locale… pas sur le serveur distant…

    Regardez l'exemple ScpTo.java pour voir comment faire ce que vous voulez…
    (session : openChannel -> connect -> openChannel -> setCommand -> getOutputStream)

  20. #20
    Débutant
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 496
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par JeitEmgie
    RE:
    Runtime exécute la commande sur la machine locale… pas sur le serveur distant…

    Regardez l'exemple ScpTo.java pour voir comment faire ce que vous voulez…
    Est-ce que tu parles du lien ici http://www.jcraft.com/jsch/examples/ScpTo.java

    si oui, est-ce le bout du programme que tu veux me montrer ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // exec 'scp -t rfile' remotely
          String command="scp -p -t "+rfile;
          Channel channel=session.openChannel("exec");
          ((ChannelExec)channel).setCommand(command);
    Je ne comprends pas ce que tu veux dire par la sequence ici :
    Citation Envoyé par JeitEmgie
    RE:
    (session : openChannel -> connect -> openChannel -> setCommand -> getOutputStream)
    Donc je dois oublier runtime ! c'est ça ?

    Si le script et tomcat et le .war de l'application se trouvent tous les 3 sur la même machine, qu'est ce qu'il faudra utiliser comme commande pour exécuter le script ?

Discussions similaires

  1. Erreur d'execution d'un script
    Par dsyann dans le forum VBScript
    Réponses: 2
    Dernier message: 09/02/2012, 20h00
  2. Erreur sur execution d'une procédure stockée
    Par Loubna.B dans le forum C#
    Réponses: 6
    Dernier message: 16/07/2009, 14h24
  3. erreur sur execution d'une requete WD11
    Par bdo0000 dans le forum WinDev
    Réponses: 1
    Dernier message: 08/02/2009, 14h15
  4. erreur sur execution requete
    Par choubak dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 14/05/2007, 11h42
  5. Réponses: 1
    Dernier message: 16/04/2007, 15h14

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