2012-02-04 4 views
2

Hy,java와 암호를 묻는 메시지가 나타나면 cmd를 실행하는 방법

내 Java 응용 프로그램에서 postgresql 데이터베이스를 덤프하려고합니다.

pg_dump -U user database>outfile.sql 

을하고 CMD 내 자바에서이 명령 행에 액세스하려면 비밀번호

를 입력하라는 메시지 : cmd를

괜찮아요 간다

Runtime.getRuntime().exec("pg_dump -U user database>outfile.sql"); 

을 지금은 암호를 기다립니다.

나는 Runtime.getRuntime().exec(String[])...으로 시도했지만 아무 것도하지 않았습니다. 에 설명 된대로

어떻게 든, 나는 그것의 명령 행에서 암호를 허용하지 않습니다

pg_dump의 문 ..

답변

0

당신은 프로세스의 표준 입력을 리디렉션 할 수 .exec() 방법에서 매개 변수 '암호'를 설정해야합니다 this question.

기본적으로 이들은 Process.getInputStream 메서드를 사용하고이 메서드가 반환하는 스트림에 (예 : BufferedWriter로) 씁니다.

exec() 메서드에서 반환 된 객체는 Process입니다.

0

감사 맥스,이

Process p = Runtime.getRuntime().exec(cmd); 
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(p.getOutputStream())); 
    bw.write("password"); 
    //bw.eriteLine(); 
    bw.flush(); 

하지만 여전히 아무것도 시도하지. InputStreamReader를 사용하여 cmd 실행에서 오류나 메시지를 확인하고 nothig를 보았습니다. 그것은 여전히 ​​'Password'를 기다리고 있습니다.

하지만 다른 해결책이 있었다 :

Process p = Runtime.getRuntime().exec("cmd /c start cmd.exe /C\"pg_dump -U user -W db>outfile.sql\""); 

그래서 검은 프롬프터가 열립니다 '비밀번호'. 암호를 쓰고 Enter를 누르면 해제됩니다.

저에게 충분합니다.

감사

0

는 "Enter"를 누르 놓쳤다. 이 수정은 나를위한 트릭이었습니다.

bw.write("password" + "\n"); 
관련 문제