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?
ProcessBuilderpb=newProcessBuilder("javac","HelloWorld.java"); //executa o comando javac para compilar a classe HelloWorldProcessp=pb.start(); //executa o processo acima
Da uma olhada na documentação.
leoramos
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.
Abraço!
A
alissonvla
cara,
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.
t+
adriano_si
Concordo com o Leo Ramos…
Procura realmente uma solução alternativa… O recurso do Java de chamar recursos específicos de S.O só foi desenvolvida por causa das excessões…
Da feita que um código java chama recurso nativo, ele perdeu 30% da sua vantagem no meu ver (ser multiplataforma).
Abs []
namor
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.
Valeu.
javax.skol
Deixa eu ver entendi…
Vc quer que apareça a tela p/ que a senha do sudo seja digitada ? ou seja passada automaticamente?
javax.skol
psyltrance:
Deixa eu ver entendi…
Vc quer que apareça a tela p/ que a senha do sudo seja digitada ? ou seja passada automaticamente?
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.
Paul_Anderson
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.