我努力讓它工作,但最終讓腳本在遠程 unix 服務器上執(zhí)行命令(執(zhí)行 sh 腳本)。我正在嘗試執(zhí)行第二個命令并在創(chuàng)建新頻道或使用相同頻道時不斷收到錯誤消息。 try { ((ChannelExec) channel).setCommand(command); PrintStream out= new PrintStream(channel.getOutputStream()); InputStream in = channel.getInputStream(); channel.connect(); BufferedReader scriptReader= new BufferedReader(new InputStreamReader(in)); scriptOutput = scriptReader.readLine(); sb = new StringBuilder(); while ((scriptOutput = scriptReader.readLine())!= null) { sb.append(scriptOutput + "\n");這是頻道執(zhí)行的第一個片段,效果很好。現(xiàn)在,在使用上述輸入流后立即調用下一個方法片段: try { StringBuilder sb = new StringBuilder(); command = new_command; ((ChannelExec) channel).setCommand(command); InputStream in = channel.getInputStream(); channel.connect(); BufferedReader scriptReader= new BufferedReader(new InputStreamReader(in)); scriptOutput = scriptReader.readLine(); //StringBuilder sb = new StringBuilder(); for(int c=0; c < consumerList.size(); c++){ ....現(xiàn)在返回以下錯誤:com.jcraft.jsch.JSchException: channel is not opened.現(xiàn)在,如果我使用相同的會話創(chuàng)建一個新頻道,我會從返回的流中得到一個空響應。我確實在遠程 shell 中測試了命令,它工作正常: int counter = 0; Channel channelII = session.openChannel("exec"); try { StringBuilder sb = new StringBuilder(); command = new_command; ((ChannelExec) channelII).setCommand(command); InputStream in = channelII.getInputStream(); channelII.connect(); BufferedReader scriptReader= new BufferedReader( new InputStreamReader(in)); scriptOutput = scriptReader.readLine();第二個命令如下,我希望能夠為不同的消費者群體重復執(zhí)行它:/usr/kafka/bin/kafka-consumer-groups.sh --bootstrap-server 192.xxx.xx.xxx:9092 --describe -group consumergroup1
使用 jsch session 和 channelexec 執(zhí)行多個命令
阿波羅的戰(zhàn)車
2021-10-13 14:01:53