Following this I have a JAVA code to do sudo -l, but it always hung. Btw, regardless if I use
Reader stdOut = new InputStreamReader (p.getInputStream ())
or
Reader stdOut = new InputStreamReader (p.getErrorStream ())
The output "[sudo] password for john" seems wasn't read by my code. Where did come from?
Here is my code
Process p= Runtime.getRuntime ().exec (new String[] {"sudo", "-l"});
Reader stdOut = new InputStreamReader (p.getErrorStream ());
BufferedReader reader = new BufferedReader(stdOut);
StringBuffer output = new StringBuffer();
String line = "";
while ((line = reader.readLine())!= null) {
System.out.println("$$" + line);
if (line.contains ("password")) {
break;
}
}
OutputStream stdIn = p.getOutputStream ();
stdIn.write ("<my password>\n".getBytes ("US-ASCII"));
stdIn.flush ();
while ((line = reader.readLine())!= null) {
System.out.println(line);
}