Calling nsupdate from java



我想从java调用bash脚本nsupdate,以便实现一种DDNS。问题是,无论我做什么,nsupdate都不会接受我试图编写的输入。

这是我目前尝试的方法:

public static void main(String[] args) throws IOException, InterruptedException {

ProcessBuilder builder = new ProcessBuilder("nsupdate", "-i");
builder.redirectOutput(ProcessBuilder.Redirect.PIPE);
Process process = builder.start();
BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
BufferedReader error = new BufferedReader(new InputStreamReader(process.getErrorStream()));
PrintWriter w = new PrintWriter(process.getOutputStream());
w.println("server 127.0.0.1r");
w.println("update delete sub.domain.dev. Ar");
w.println("update add sub.domain.dev. 2 A 12.23.45.56r");
w.println("sendr");
w.println("quitr");
process.waitFor(10, TimeUnit.SECONDS);

process.destroy();

}

我试了很多方法,但似乎都不起作用。不幸的是,我不能使用文件作为参数传递,尽管这种方式迄今为止效果最好。

我认为您还需要重定向流程输入:

builder.redirectInput(ProcessBuilder.Redirect.PIPE);

我意识到我需要在每个命令之后刷新输出流

最新更新