2013-03-06 3 views
1

J'ai un code qui me permet de me connecter via ssh, d'exécuter une commande et d'obtenir une réponse. Cela fonctionne bien mais seulement pour les commandes non-interactives (comme: ls, df qui renvoie le résultat immédiatement après leur exécution). Le problème est quand j'essaye d'exécuter une commande interactive comme top ou passwd code attend toujours pour la réponse (et bien sûr n'en obtenir aucun).Comment faire face aux commandes Linux interactives?

Comment gérer les commandes interactives? Je me fiche vraiment de la sortie, je veux juste l'exécuter.

public String runCommand(String command) throws Exception { 

    // SSH Channel 
    ChannelExec channelssh = (ChannelExec) session.openChannel("exec");  

    // Execute command 
    channelssh.setCommand(command); 
    channelssh.connect();  

    InputStream inputStream = channelssh.getInputStream(); 
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); 
    StringBuilder stringBuilder = new StringBuilder(); 
    String line; 

    while ((line = bufferedReader.readLine()) != null) 
    { 
     stringBuilder.append(line); 
     stringBuilder.append('\n'); 
    } 

    channelssh.disconnect(); 
    return stringBuilder.toString(); 
} 

Répondre

Questions connexes