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();
}