[英]leaving java linux process to user or OS control
代码:
String line;
ProcessBuilder telnetProcessBuilder = new ProcessBuilder("/bin/bash");
telnetProcessBuilder.redirectErrorStream(true);
Process telnetProcess = telnetProcessBuilder.start();
BufferedReader input = new BufferedReader(new InputStreamReader(telnetProcess.getInputStream()));
BufferedWriter output = new BufferedWriter(new OutputStreamWriter(telnetProcess.getOutputStream()));
output.write("telnet <hostname> -l <username>\n");
output.flush();
output.write("<password>\n");
output.flush();
output.write("cd <path>\n");
output.flush();
output.write("<script-file1>\n");
output.flush();
output.write("<script-file2>\n");
output.flush();
output.write("\n");
output.flush();
while((line = input.readLine())!= null)
{
System.out.println(line);
if(line.indexOf("<some final text after <script-file2>>")>-1)
{
line = input.readLine();
System.out.println(line);
break;
}
}
output.close();
input.close();
//output.write("exit\n");
//output.flush();
//telnetProcess.destroy();
根据上面的代码,java 启动一个 linux 进程 /bin/bash 然后远程登录到远程系统,在该系统中它为应用程序执行一些脚本,然后它必须保留两个输入,Z78E6221F6393D14 和 6CEZD 进程控制到用户流和退出 /bin/BashZD 0 码。
Now, after making jar file i will call it from linux command (GNOME) terminal and then process should leave control of itself & IO streams to user at end of java code (its execution), where user will enter some commands like system status and输入特定字符时诊断或退出取决于应用程序,这是要求。
但是,问题是 java 在最后一行之后退出,因此该过程,即使我没有退出或破坏该过程。 是的,这是一种自然行为,但是如果有人已经面临这个问题,有人可以告诉我如何实现这一目标吗? 好吧,我无法显示脚本文件的内容以及自其公司拥有以来您可能需要的其他内容。
感谢您的回答
阿舒托什
我认为您的 java 应用程序在script-file2
的最后一行之后终止,实际上这是您的while
循环中的if
条件。
如果我理解正确,您希望您的 java 应用程序 (1) 打开到远程机器的 telnet 连接,(2) 自动发出一些命令,然后 (3) 让用户手动发出其他命令,最后 (4) 关闭用户发出退出命令时的 telnet 连接。 我猜(1)和(2)已经完成并在您的代码中工作。 在那一点上,我认为您必须为您的应用程序构建一些用户界面,用户在其中输入命令,然后您 pipe 将这些命令发送到您的 telnet 进程(就像您对初始命令所做的那样,使用output.write(userCommand); output.flush();
你继续这样做,直到用户输入的命令exit
(或其他)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.