2
我想使用ssh-keygen linux實用程序從私鑰中使用Java的Runtime.getRuntime().exec()到提取公鑰。在Java中的ssh-keygen命令從私鑰中提取公鑰
當我運行在終端命令,它的工作完美無瑕,我能夠從RSA私鑰
ssh-keygen -y -f /home/useraccount/private.txt > /home/useraccount/public.txt
但是當我運行使用Java相同的命令不會創建提取公鑰public.txt文件。它也不會拋出任何錯誤。
Process p = Runtime.getRuntime().exec("ssh-keygen -y -f /home/useraccount/private.txt > /home/useraccount/public.txt");
p.waitFor();
我想知道爲什麼?
當你輸入用'> file'等命令_TO一個shell_,shell就運行前的重定向該程序。 Java'Runtime.exec()'不執行重定向。 (1)從'Process.getInputStream()'中讀取並自己寫入文件; (2)使用'ProcessBuilder'和'.redirectOutput()'來做重定向;或(3)使用'.exec(String ...)'重載運行例如''sh'帶'-c'和(作爲單個參數!)shell然後解析和處理的整個命令行。 –
你能分享一個樣本嗎? – sunny