Я попытался создать его, запустив команду, в которой передаю файл, содержащий команду. И я смог создать файл.
Вот мой тест:
@Test
public void test() throws IOException {
String output = "";
String sInOut;
String sErr;
// RunCommandDto runCommandDto = new RunCommandDto();
String[] cmd = { "sh", "~/ssh_key_gen.sh"};
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec( cmd );
BufferedReader stdInput = new BufferedReader( new InputStreamReader( proc.getInputStream() ) );
BufferedReader stdError = new BufferedReader( new InputStreamReader( proc.getErrorStream() ) );
while ( (sInOut = stdInput.readLine()) != null ) {
output += sInOut + "\n";
}
while ( (sErr = stdError.readLine()) != null ) {
output += sErr + "\n";
}
System.out.println("if failed: " + output);
}
И мой файл, который содержит команду, выглядит так:
#!/bin/bash
ssh-keygen -t rsa -b 4096 -f /tmp/sshkey -q -N ""
Обратите внимание: вы можете либо получить абсолютный путь для вашего файла 'ssh_key_gen.sh', либо вы можете получить относительный путь к нему.