我想从java中调用bash脚本nsupdate,以便实现一种动态域名系统。问题是,无论我做什么,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.1\r");
w.println("update delete sub.domain.dev. A\r");
w.println("update add sub.domain.dev. 2 A 12.23.45.56\r");
w.println("send\r");
w.println("quit\r");
process.waitFor(10, TimeUnit.SECONDS);
process.destroy();
}我已经尝试了很多方法,但似乎都不起作用。不幸的是,我不能使用文件作为参数传递,尽管到目前为止这种方式工作得最好。
发布于 2020-07-20 03:41:47
我认为您还需要重定向流程输入:
builder.redirectInput(ProcessBuilder.Redirect.PIPE);发布于 2020-07-20 03:45:48
我意识到我需要在每次命令后刷新输出流。
https://stackoverflow.com/questions/62984533
复制相似问题