2013-08-02 1 views
1

Java로 작성된 교차 플랫폼 설치 유틸리티로 작업 중입니다. Linux에서 "apt-get ..."과 같은 쉘 명령을 실행할 수 있기를 원합니다. 이 목적으로 ProcessBuilder API를 사용하고 있습니다.Java에서 루트로 셸 명령을 실행하는 방법

불행히도 일부 명령에는 루트 권한이 필요합니다. 내가 루트로 다음 쉘 명령을 실행하고 싶습니다 :

의 bash -c apt-get을 나는 "apt-get을"아무것도 때문에 작동하지 않습니다하기 전에 "sudo는"추가하려고하면 [일부 패키지]

를 -y 설치 "sudo"는 암호를 얻을 수있는 터미널이 없습니다.

사용자에게 암호를 묻고 위에서 언급 한 셸 명령을 실행하려면 어떻게해야합니까?

짧은 코드 스 니펫은 매우 감사하겠습니다! 미리 감사드립니다. 최대

+1

루트 권한으로 설치 프로그램을 실행하는 것이 필요합니다. –

+0

Java Web Start에서이 설치 프로그램을 사용할 계획입니다. JavaWS에 너무 많은 권한을 부여하는 것은 좋지 않습니다. 또한 필요한 경우에만 루트 명령을 실행하고 싶습니다. 내 설치 관리자는 먼저 설치가 필요한지 여부를 확인합니다. –

답변

2

gksudo <your command>을 실행할 수 있지만 응용 프로그램을 특정 UI (예 : gnome, kde 등

+0

감사합니다! 이제 작동합니다. 내 프로젝트가 주로 그래픽 환경을 대상으로하기 때문에 UI에 바인딩하는 것이 중요하지 않습니다. –

+0

@ user1815381 : 도움이된다면 대개 답변을 수락합니다. 당신이 똑같이하기를 바랍니다. 도움이되었습니다. 감사! –

+0

죄송합니다! 나는 그것을 몰랐다. 힌트를 주셔서 감사합니다! –

0

모든 루트 작업을 스크립트 파일에 기록하고 사용자에게 루트 권한으로 실행하도록 요청할 수 있습니다. 어색해 보이지만, "엔터프라이즈 급"소프트웨어 공급 업체 (예 : Oracle RDBMS의 (Java-) 설치 프로그램)가 대다수의 11g 이상인 경우에 그렇게합니다.