Boa tarde galera!
Pesquisei aqui no forum algumas coisas sobre SSH com JAVA… bom para conectar e executar comandos no linux como:
df -lh
ls
pwd
w
uname -a
ele esta funcionando bem, porém, quando preciso de permissões de root (exemplo seria usar comandos do ldap ou do SAMBA)
ele nao consegue autenticar-se. Exemplo básico:
Logo como user sysadm e executo a rotina:
:$ df -lh
:$ ls -l
:$ smbldap-passwd fulano [vai dar erro pois nao sou root]
entao preciso virar root para poder o comando:
:$ sudo su [que dá poderes de root ao user atual]
ou
:$ su - [torna-me root]
em ambos os casos o retorno para este comando seria
:$ Password: [aqui digitaria o pass]
porem isso nao ocorre, o programa trava....
estou usando o Ganymede SSH2…
abaixo o metodo que conecta.
public boolean changePass() {
try {
Connection con = new Connection("10.1.167.3");
con.connect();
boolean autenticado = con.authenticateWithPassword(usr.getUser(),
String.valueOf(usr.getPass()));
if (!autenticado)
throw new Exception("Erro ao autenticar o usuário." +
"\nVerifique sua senha");
Session ses = con.openSession();
ses.execCommand("uname -a && date && uptime && who");
InputStream stdout = new StreamGobbler(ses.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
String line = null;
while (true) {
if ((line = br.readLine()) == null)
break;
System.out.println(line);
}
ses.close();
con.close();
return true;
} catch (Exception e) {
ShowMsg.errorMsg("Erro!\nDesc.: " + e.getMessage());
return false;
}
}