[英]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.