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

papa tunde - 8 déc. 2015 à 20:08
 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

2 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
8 déc. 2015 à 21:30
Peut être en utilisant SSH, ça peut passer.
0
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.
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
9 déc. 2015 à 09:01
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();
  }
}



0
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.
0
papa tunde > papa tunde
10 déc. 2015 à 07:35
est ce que les codes sources que vous m'avez donner sont fonctionnels sur un terminal installé sur un serveur FTP
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111 > papa tunde
10 déc. 2015 à 08:22
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.
0
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
0
Rejoignez-nous