Je suis nouveau dans ce genre d'application Java et je cherche un exemple de code sur la connexion à un serveur distant en utilisant SSH, j'exécute des commandes et je récupère la sortie en utilisant Java comme langage de programmation.Comment exécuter des commandes SSH sur un système distant utilisant Java?
Répondre
Jetez un oeil à Runtime.exec() Javadoc
Process p = Runtime.getRuntime().exec("ssh myhost");
PrintStream out = new PrintStream(p.getOutputStream());
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
out.println("ls -l /home/me");
while (in.ready()) {
String s = in.readLine();
System.out.println(s);
}
out.println("exit");
p.waitFor();
Est-ce que cela fonctionne? Pourquoi a-t-il donné un -1? – Zubair
@Zubair - Le gars qui a donné -1 n'a pas pris la peine d'expliquer son point de vue. Cette solution fonctionne parce qu'elle est aussi simple que possible. Ce n'est pas un "Java pur", mais c'est un inconvénient, mais si vous êtes sur Linux, vous ne pouvez pas le simplifier sans utiliser de bibliothèques tierces. – bobah
ok, merci pour l'explication – Zubair
je Ganymède pour ce il y a quelques ... yeas http://www.cleondris.ch/opensource/ssh2/
Vous pouvez jeter un oeil à ce cadre basé sur Java pour l'exécution de commande à distance, incl. via SSH: https://github.com/jkovacic/remote-exec Il repose sur deux bibliothèques SSH opensource, soit JSch (pour cette implémentation même une authentification ECDSA est supportée), soit Ganymed (l'une de ces deux bibliothèques sera suffisante). Au premier abord, cela peut sembler un peu complexe, vous devrez préparer beaucoup de classes liées à SSH (fournir le serveur et vos détails utilisateur, spécifier les détails de chiffrement, fournir des clés privées compatibles OpenSSH, etc., mais le SSH lui-même est assez complexe aussi). D'autre part, la conception modulaire permet une inclusion simple de plusieurs bibliothèques SSH, une implémentation facile du traitement des sorties d'autres commandes ou même des classes interactives, etc.
Voici la manière la plus simple de SSh en java. Téléchargez l'un des fichiers dans le lien ci-dessous et l'extrait, puis ajouter le fichier jar à partir du fichier extrait et ajouter à votre chemin de construction du projet http://www.ganymed.ethz.ch/ssh2/ et utiliser la méthode ci-dessous
public void SSHClient(String serverIp,String command, String usernameString,String password) throws IOException{
System.out.println("inside the ssh function");
try
{
Connection conn = new Connection(serverIp);
conn.connect();
boolean isAuthenticated = conn.authenticateWithPassword(usernameString, password);
if (isAuthenticated == false)
throw new IOException("Authentication failed.");
ch.ethz.ssh2.Session sess = conn.openSession();
sess.execCommand(command);
InputStream stdout = new StreamGobbler(sess.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
System.out.println("the output of the command is");
while (true)
{
String line = br.readLine();
if (line == null)
break;
System.out.println(line);
}
System.out.println("ExitCode: " + sess.getExitStatus());
sess.close();
conn.close();
}
catch (IOException e)
{
e.printStackTrace(System.err);
}
}
Je posté un code qui pourrait aider à: http://stackoverflow.com/questions/2405885/any-good-jsch-examples –