Bon je n'y arrive pas mieux, grâce à tes indications j'ai pu orienter mes recherches et voila le code que j'ai pour le moment :
(en grande partie récupéré)
try {
String[] cmd = {"sudo"," ps -A -eo pid,fname"};
// lancement de la commande
Runtime r = Runtime.getRuntime();
Process p = r.exec(cmd);
// récupération du mot de passe
String rpass = JOptionPane.showInputDialog(null, "Mot de passe root :");
// flux en entrée du process
OutputStream os = p.getOutputStream();
// flux en sortie du process
InputStream is = p.getInputStream();
// initialisation du printwriter pour écrire dans le flux
PrintWriter writer = new PrintWriter(os, true);
p.waitFor();
// je lui donne le mot de passe
writer.println(rpass);
// Création du bufferedReader pour lire le résultat
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
// affichage de la sortie du process
String line;
while((line = reader.readLine()) != null)
{
System.out.println(line);
}
[^] # Re: stdin
Posté par DeliciousF . En réponse au message Authentification pour une commande exécutée dans un exec(). Évalué à 1.
(en grande partie récupéré)
try {
String[] cmd = {"sudo"," ps -A -eo pid,fname"};
// lancement de la commande
Runtime r = Runtime.getRuntime();
Process p = r.exec(cmd);
// récupération du mot de passe
String rpass = JOptionPane.showInputDialog(null, "Mot de passe root :");
// flux en entrée du process
OutputStream os = p.getOutputStream();
// flux en sortie du process
InputStream is = p.getInputStream();
// initialisation du printwriter pour écrire dans le flux
PrintWriter writer = new PrintWriter(os, true);
p.waitFor();
// je lui donne le mot de passe
writer.println(rpass);
// Création du bufferedReader pour lire le résultat
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
// affichage de la sortie du process
String line;
while((line = reader.readLine()) != null)
{
System.out.println(line);
}
p.waitFor();
p.destroy();
rpass = null;
}
catch (Exception e){
System.out.println("arf");
}
}
En résultat je n'ai rien, je fourni le mot de passe et l'application se termine.
j'ai testé avec juste : String cmd = "ps -A -eo pid,fname";
et j'obtiens bien ma liste de processus.
si je mets sudo à la place de su, ça reste en attente..
Je n'ai pas trouvé de moyen de vérifier l'état des flux et après 3 jours de recherche, je n'arrive toujours à rien :/
il manque peut etre un truc tout bête..
[^] # Re: stdin
Posté par DeliciousF . En réponse au message Authentification pour une commande exécutée dans un exec(). Évalué à 1.