Execution d'une ligne de cmd linux machine virtuell via windows

- - Dernière réponse :  papa tunde - 10 déc. 2015 à 09:33
Bonjour,
je suis à la recherche d'une code source pour exécuter une ligne de commande LINUX qui est installé sur une machine virtuelle depuis un système hôte WINDOWS en JAVA.
Plus précisément la commande est une ligne de commande LINUX mais cette commande est exécutée en java via Windows qui est le système à laquelle la machine virtuelle est installée
svp!
cordiale
Afficher la suite 

2 réponses

Messages postés
14569
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
21 octobre 2019
136
0
Merci
Peut être en utilisant SSH, ça peut passer.
mrci bcp! j'espère que çà passera. J'ai une autre question à vous posez comment gérer les outils d'interface graphique d'une application externe en java. par exemple: il existe une application d'autentification (identifiant et mot de passe puis) et j'aimerai remplir ces formulaires via les formulaires de mon application java puis appuyer sur le bouton entrer de mon application.
Commenter la réponse de NHenry
Messages postés
5340
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
3 septembre 2019
87
0
Merci
Salut,

+1 pour le SSH
Si tu utilises cette librairie: JSCH (examples)
Tu pourras faire ce que tu veux.

Exemple simpliste:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;

import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;


public class TestSsh {

  public static void main(String[] args) {
    try {
      String result = execSsh("adress_ip_ou_hostname", 22, "username", "userpassword", "ls -als /", false);
      System.out.println("Result: " + result);
      result = execSsh("adress_ip_ou_hostname", 22, "username", "userpassword", "ls -als /root", true);
      System.out.println("Result: " + result);
    } catch(JSchException e) {
      e.printStackTrace();
    } catch(IOException e) {
      e.printStackTrace();
    }
  }
  
  public static String execSsh(String host, int port, String username, String userpassword, String command, boolean useSudo) throws JSchException, IOException {
    /* Désactivation de la vérification stricte de clé d'hôte. */
    Properties config = new Properties(); 
    config.put("StrictHostKeyChecking", "no");
    /* Configuration de la lib. */
    JSch jsch = new JSch();
    Session session=jsch.getSession(username, host, port);
    session.setPassword(userpassword);
    session.setConfig(config);
    session.connect();
       
    /* Préparation du channel à utiliser (en mode exec). */
    ChannelExec channel= (ChannelExec)session.openChannel("exec");
    /* En prévision d'un "oui mais comment qu'on fait avec sudo..." */
    // prépare la commande à exécuter. */
    channel.setCommand((useSudo ? "sudo -S -p '' " : "") + command);
    
    channel.setInputStream(null);
    channel.setErrStream(null);
    
    /* Si sudo est requis */
    OutputStream out = useSudo ? channel.getOutputStream() : null;
       
    InputStream in=channel.getInputStream();
    /* ouverture de la connexion. */
    channel.connect();
    /* on passe le mot de passe à sudo (si besoin). */
    if(out != null) {
      out.write((userpassword+"\n").getBytes());
      out.flush();
    }
    /* lecture de la réponse */
    final StringBuilder sb = new StringBuilder();
    byte[] tmp=new byte[1024];
    for(;;){
      while(in.available() > 0){
        int i=in.read(tmp, 0, 1024);
        if(i<0)break;
        sb.append(new String(tmp, 0, i));
      }
      if(channel.isClosed()){
        break;
      }
      try{Thread.sleep(1000);}catch(Exception ee){}
    }
    /* libération des ressources. */
    if(out != null) out.close();
    if(in != null) in.close();
    channel.disconnect();
    session.disconnect();
    /* Retourne la réponse */
    return sb.toString();
  }
}



mrci bcp! j'espère que çà passera. J'ai une autre question à vous posez comment gérer les outils d'interface graphique d'une application externe en java. par exemple: il existe une application d'autentification (identifiant et mot de passe puis un boutton entrer) et j'aimerai remplir ces formulaires via les formulaires de mon application java puis appuyer sur le bouton entrer de mon application.
> papa tunde -
est ce que les codes sources que vous m'avez donner sont fonctionnels sur un terminal installé sur un serveur FTP
Twinuts
Messages postés
5340
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
3 septembre 2019
87 > papa tunde -
Salut,

Peut importe où il est installer si tu peux y accéder en SSH ça devrait fonctionner.
Maintenant si tu ne peux accéder à ton serveur que par le biais du protocole FTP... oublie le code source sur SSH et oriente tes recherches vers l' API commons-net (par exemple) qui te permettra d'utiliser des commandes FTP.
j'ai vu le page commons-net mais je ne sais rien du tout sur ce code alors que tes codes sources sont plus lisibles. peut-tu me donner un exemple sur l'execution d'un cmd handling ericsson installé sur un serveur FTP via windows. pour être honnête je n'est jamais développer une application basé sur un réseau et toutes ces trucs sont très flou pour moi. svp! ma vie en dépend
Commenter la réponse de Twinuts