我需要通过Java(如果可能的话,通过jsch)运行var body = {
grant_type: 'password',
username: '###@###.fr',
password: '###'
};
$.ajax({
url: 'https://####.####:xxx/connect/token',
type: 'POST',
dataType: 'json',
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
data: JSON.stringify(body),
complete: function(result) {
accessToken = result.access_token;
teestJson=JSON.stringify(result);
alert(result);
},
success: function(result) {
teestJson=JSON.stringify(result);
alert(teestJson);
},
error: function(result) {
alert(result);
},
});
到Cisco / Alcatel交换机
我使用SSH访问此服务器。我尝试之后
show interfaces status
我尝试这样做(如果我在控制台中手动运行命令,则可以)
Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand(command);
channel.setInputStream(null);
((ChannelExec) channel).setErrStream(System.err);
channel.setOutputStream(System.out);
InputStream in = channel.getInputStream();
channel.connect();
我需要连接,发送命令并记录命令结果。如果我手动执行此操作,则结果正常。我在虚拟机中尝试我的代码,结果与物理交换机不同。
答案 0 :(得分:0)
您可以尝试以下方法:
Channel channel=null;
String result = null;
try
{
channel = session.openChannel("exec");
String Command = "show interfaces status"; // Command
//System.out.println("Command : "+Command);
((ChannelExec)channel).setCommand(Command);
InputStream in=channel.getInputStream();
byte[] tmp=new byte[1024];
channel.connect();
if(channel.isConnected())
{
//System.out.println("Channel connected");
}
while(true)
{ // geeting the result in this loop
while(in.available()>0)
{
int i=in.read(tmp, 0, 1024);
if(i<0)break;
result += new String(tmp, 0, i); // result
}
if(channel.isClosed())
{
break;
}
else
{
try{ Thread.sleep(1000); }catch(Exception ee){}
}
}
}
catch(JSchException e)
{
// your exception message
}