Olá, preciso criar um diretório em / porém quando tento usar o mkdir do java ele não cria pois precisa para este diretório o comando ser dado pelo root (sudo).
Sei que não posso passar a senha do root como parâmetro pois seria uma falha de segurança do SO.
É possível eu fazer o comando no Java, tipo: “sudo mkdir /pasta” o linux abrir o terminal já com este comando e só pedir a senha do sudo?
ProcessBuilder pb = new ProcessBuilder("javac", "HelloWorld.java"); //executa o comando javac para compilar a classe HelloWorld
Process p = pb.start(); //executa o processo acima
Cara, tens outra saída pra isso que não usar Java?
Eu trabalho atualmente num sistema que faz EXATAMENTE isso que tu tá fazendo. A verdade: é uma m****!
O jeito é tu ler o retorno, ver se é “senha:” (ou pior, pode ser que esteja em outro idioma… e daí, como faz?) e mandar outro comando Runtime.
Sinceramente, cara, se puder fazer sem java, melhor pra você.
Outra saída é criar script em shell, mesmo, e executar pelo sistema. Mas tô meio que chutando, não sei como fica a abordagem da senha nesse caso.
ate aonde eu sei para execução comando do SO com java, era utilizando a classe Runtime, talvez que conheça mais de linux possa te ajudar, pois meu conhecimento é basico.
Realmente acredito que em C++ este trabalho seja mais simples.
Agora em java é possível eu fazer um comando em sudo e esperar o usuário escrever a senha?
eu consegui fazer isso chamando o jar pelo terminal assim: “java -jar nome.jar”
aí ele executa o java no console e pede a senha só que fica bugado o terminal e não consigo inserir a senha, quem quiser tentar faz aí rapidinho com o comando “sudo mkdir /teste” no Runtime.
[quote=psyltrance]Deixa eu ver entendi…
Vc quer que apareça a tela p/ que a senha do sudo seja digitada ? ou seja passada automaticamente?[/quote]
Se puder utilizar parte gráfica do SO, troque o ‘sudo’ por ‘gksudo’ que ele irá mostrar a tela de prompt, nativa do SO, do usuário exigindo a senha.
Bom dia, não seis se é o que precisa mas vamos lá:
Para locais que o usuário local tenha permissão:
Runtime.getRuntime().exec(“mkdir /diretorio/pasta”);
Para locais que precise fazer como root faça:
Runtime.getRuntime().exec(“gksudo mkdir /diretorio/pasta”);
Esta opção solicita solicita a senha ao usuário.