2
Java Runtime.getRuntime(). exec()를 에 사용하려고합니다. ssh-keygen linux 유틸리티를 사용하여 개인 키에서 공개 키를 추출하십시오. 내가 터미널에서이 명령을 실행하면비밀 키에서 공개 키를 추출하는 자바의 ssh-keygen 명령
, 그것은 완벽한 작품과 내가 자바를 사용하여 동일한 명령을 실행할 때 RSA 개인 키
ssh-keygen -y -f /home/useraccount/private.txt > /home/useraccount/public.txt
그러나이 작성하지 않습니다에서 공개 키를 추출 할 수있어 public.txt 파일. 어떤 오류도 발생시키지 않습니다.
왜 그런지 궁금한가요?
는, 쉘은 실행하기 전에 리디렉션을 수행 프로그램. Java'Runtime.exec()'는 리디렉션을하지 않습니다. (1)'Process.getInputStream()'에서 읽은 다음 파일에 직접 쓰십시오; (2)'ProcessBuilder'를'.redirectOutput()'과 함께 사용하여 리디렉션을 수행하십시오; 또는 (3)'.exec (String ...) '오버로드를 사용하여 예를 들어 실행하십시오. 'sh '를'-c' 그리고 (단 하나의 인자로!) 쉘이 파싱하고 처리하는 전체 커맨드 라인을 사용한다. –
샘플을 공유해주세요. – sunny