我想用jsch连接到远程交换机并运行一些命令并提取输出。Jsch:命令输出不可用
我能够使用连接到交换机,但命令输出在输入流中不可用。也许我没有按照正确的方式去做。这里的代码
session = jsch.getSession("user", "10.0.0.0", 22);
session.setPassword("somepwd");
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
System.out.println("connected to remote host");
Channel channel = session.openChannel("shell");
OutputStream ops = channel.getOutputStream();
PrintStream ps = new PrintStream(ops);
channel.connect();
ps.println("show version");
ps.flush();
ps.close();
InputStream in=channel.getInputStream();
byte[] bt=new byte[1024];
while(in.available()>0)
{
int i=in.read(bt, 0, 1024);
if(i<0)
break;
String str=new String(bt, 0, i);
//displays the output of the command executed.
System.out.print(str);
}
channel.disconnect();
session.disconnect();
当我调试inputStream.isAvailable()总是返回零暗示没有输出命令。
TIA!
http://www.jcraft.com/jsch/examples/Shell.java.html – 2014-09-10 10:17:44
当您的代码达到'while(in.available()> 0)时会发生什么?它挂起来还是别的东西? – Kenster 2014-09-12 13:25:05
它不挂..总是假的条件.. – ayush 2014-09-15 07:35:27