Bonjour à tous amis développeurs.
Je ne sais pas si je suis dans la bonne discussion, ne sachant pas trop dans quelle catégorie est mon problème.
Pour une application web, je souhaite exécuter des commandes sh sur un serveur distant.
J'ai cherché différentes façon de faire sur Google et une des façons que j'ai retenu est d'utiliser la librairie ch.ethz.ssh2.
Après je suis ouvert à d'autres possibilité.
Donc j'arrive correctement à me connecter avec l'utilisateur principal, mon problème se situe sur le fait que je dois changer ensuite d'utilisateur (il ne m'est pas possible de me connecté directement avec l'utilisateur de travail, je dois obligatoirement me connecter avec un autre utilisateur).
Donc pour changer d'utilisateur, j'essaie de lancer la commande "su - user" puis de renvoyer une réponse avec le mot de passe, mais j'obtiens l'erreur suivante : "java.io.IOException: SSH channel is closed. (Close requested by remote)"
Voici mon code :
Auriez-vous une idée de comment corriger le problème, ou d'utiliser une autre méthode?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 try { this.session = this.connection.openSession(); log.info("Exécution de la commande : " + cmd); this.session.execCommand(cmd); this.session.getStdin().write(password + "\n".getBytes()); InputStream stdout = new StreamGobbler(this.session.getStdout()); BufferedReader br = new BufferedReader(new InputStreamReader(stdout, this.encoding)); while (true) { String line = br.readLine(); if (line == null) { break; } System.out.println(line); retour.add(line); } br.close(); this.session.close(); } catch (IOException e) { log.error(e); }
Merci d'avance!
Nb : sur le serveur à distance il n'y a pas de serveur web, sinon j'aurais directement installé mon application dessus, et je ne peux pas faire d'installations.
Partager