Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java调用nsupdate_Java_Bind9 - Fatal编程技术网

从java调用nsupdate

从java调用nsupdate,java,bind9,Java,Bind9,我想从java调用bash脚本nsupdate,以实现一种DDN。问题是无论我做什么,nsupdate都不会接受我试图编写的输入 这是我目前尝试的方式: publicstaticvoidmain(String[]args)抛出IOException、interruptedeexception{ ProcessBuilder=新的ProcessBuilder(“nsupdate”、“-i”); 重定向输出(ProcessBuilder.Redirect.PIPE); Process=builder

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

这是我目前尝试的方式:

publicstaticvoidmain(String[]args)抛出IOException、interruptedeexception{
ProcessBuilder=新的ProcessBuilder(“nsupdate”、“-i”);
重定向输出(ProcessBuilder.Redirect.PIPE);
Process=builder.start();
BufferedReader输入=新的BufferedReader(新的InputStreamReader(process.getInputStream());
BufferedReader error=新的BufferedReader(新的InputStreamReader(process.getErrorStream());
PrintWriter w=新的PrintWriter(process.getOutputStream());
w、 println(“服务器127.0.0.1\r”);
w、 println(“更新删除sub.domain.dev.A\r”);
w、 println(“更新add sub.domain.dev.2 A 12.23.45.56\r”);
w、 println(“发送\r”);
w、 println(“退出”);
进程。等待(10,时间单位。秒);
process.destroy();
}

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

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

builder.redirectInput(ProcessBuilder.Redirect.PIPE);

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

不,我只需要在每个命令生效后刷新输出流。。。您可以将您的
PrintWriter
语句包装到try with resources块中,使其自动关闭(并刷新):
try PrintWriter w=new PrintWriter(process.getOutputStream()){…}
好主意,但是我不想每次打印新行时都关闭流。我将把整个函数(我使用writer的部分)包装在其中,谢谢