Java 如何迭代从Channel(Shell)PrintStream获得的输出
我必须通过java在putty中运行脚本。我使用了通道(“Shell”),但我的代码将从连接到会话等的整个过程打印出来。 其中,当我需要oly时,通过pritnstream发送我保存的命令的输出 我的代码:Java 如何迭代从Channel(Shell)PrintStream获得的输出,java,shell,jsch,Java,Shell,Jsch,我必须通过java在putty中运行脚本。我使用了通道(“Shell”),但我的代码将从连接到会话等的整个过程打印出来。 其中,当我需要oly时,通过pritnstream发送我保存的命令的输出 我的代码: jsch = new JSch(); session = jsch.getSession(username, host, 22); session.setPassword(pass); java.util.Properties config = new java.ut
jsch = new JSch();
session = jsch.getSession(username, host, 22);
session.setPassword(pass);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
System.out.println("Attempting to Connect..!");
session.setConfig("PreferredAuthentications",
"publickey,keyboard-interactive,password");
session.connect();
Channel channel = session.openChannel("shell");
ArrayList<String> array=new ArrayList<String>();
channel.connect();
OutputStream inputstream_for_the_channel = channel.getOutputStream();
PrintStream commander = new PrintStream(inputstream_for_the_channel, true);
commander.println("cd /pre/d02/pinDap75a/opt/ifw/vf/cdr/p3/out/irel");
commander.println("irel_wrapper");
commander.close();
InputStream outputstream_from_the_channel = channel.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(outputstream_from_the_channel));
String line;
while ((line = br.readLine()) != null){
System.out.println(line);
}
do {
Thread.sleep(1000);
} while(!channel.isEOF());
session.disconnect();
}
}
预期产出:
<template_name> - Name of the template, to be part of the
command line arguments for each batch run.
Current options are:
P1_VLIVE_ZERO, P1_TXT_ZERO, P1_GSMV_ZERO, P1_GSMVT_ZERO,
P1_GPRS_ZERO, P1_OGPRS_ZERO, P1_PXT_ZERO,
P1_VLIVE, P1_PXT, P1_GSMV, P1_GSMVT, P1_WAP,
P1_TXT, P1_GPRS, P1_OGPRS,
P2_VLIVE, P2_PXT, P2_GSMV, P2_GSMVT, P2_WAP,
P2_TXT, P2_GPRS,
P3A_GSMV, P3B_GSMV, P3C_GSMV, P3D_GSMV, P3E_GSMV,
P3A_GPRS, P3B_GPRS, P3C_GPRS, P3D_GPRS, P3E_GPRS,
P3A_TXT, P3B_TXT, P3C_TXT, P3D_TXT, P3E_TXT,
P3A_PXT, P3B_PXT, P3C_PXT, P3D_PXT, P3E_PXT,
P3_GSMVT, P3_GSMF, P3_GSMD, P3_WAP, P3_VLIVE,
SUSPENSE, SUSPENSE_UPDATE
-模板的名称,作为
每个批处理运行的命令行参数。
目前的选择是:
P1_VLIVE_ZERO、P1_TXT_ZERO、P1_GSMV_ZERO、P1_GSMVT_ZERO、,
P1_GPRS_ZERO、P1_OGPRS_ZERO、P1_PXT_ZERO、,
P1_VLIVE、P1_PXT、P1_GSMV、P1_GSMVT、P1_WAP、,
P1_TXT、P1_GPRS、P1_OGPRS、,
P2_VLIVE、P2_PXT、P2_GSMV、P2_GSMVT、P2_WAP、,
P2_TXT、P2_GPRS、,
P3A_GSMV、P3B_GSMV、P3C_GSMV、P3D_GSMV、P3E_GSMV、,
P3A_GPRS、P3B_GPRS、P3C_GPRS、P3D_GPRS、P3E_GPRS、,
P3A_TXT、P3B_TXT、P3C_TXT、P3D_TXT、P3E_TXT、,
P3A_PXT、P3B_PXT、P3C_PXT、P3D_PXT、P3E_PXT、,
P3_GSMVT、P3_GSMF、P3_GSMD、P3_WAP、P3_VLIVE、,
悬念,悬念更新
有人能帮我解决如何实现这个使用频道(“Shell”)吗?因为频道(“exec”)不适合我的命令。一个“Shell”频道实现了一个交互式会话。因此,您自然希望在交互式会话期间阅读服务器将打印的所有内容,包括欢迎消息和命令echo等内容。“exec”会话更适合您正在尝试的操作。您应该坚持使用,并使exec代码正常工作。在exec命令中,无法执行Irel_包装。Exec只能运行putty命令,如mv或cd find。| grep等。当我尝试使用脚本编写器Irel wrapper时,Exec无法执行它。有没有办法使用exec运行脚本??
**commander.println("cd /pre/d02/pinDap75a/opt/ifw/vf/cdr/p3/out/irel");
commander.println("irel_wrapper");**
<template_name> - Name of the template, to be part of the
command line arguments for each batch run.
Current options are:
P1_VLIVE_ZERO, P1_TXT_ZERO, P1_GSMV_ZERO, P1_GSMVT_ZERO,
P1_GPRS_ZERO, P1_OGPRS_ZERO, P1_PXT_ZERO,
P1_VLIVE, P1_PXT, P1_GSMV, P1_GSMVT, P1_WAP,
P1_TXT, P1_GPRS, P1_OGPRS,
P2_VLIVE, P2_PXT, P2_GSMV, P2_GSMVT, P2_WAP,
P2_TXT, P2_GPRS,
P3A_GSMV, P3B_GSMV, P3C_GSMV, P3D_GSMV, P3E_GSMV,
P3A_GPRS, P3B_GPRS, P3C_GPRS, P3D_GPRS, P3E_GPRS,
P3A_TXT, P3B_TXT, P3C_TXT, P3D_TXT, P3E_TXT,
P3A_PXT, P3B_PXT, P3C_PXT, P3D_PXT, P3E_PXT,
P3_GSMVT, P3_GSMF, P3_GSMD, P3_WAP, P3_VLIVE,
SUSPENSE, SUSPENSE_UPDATE