如何通过Java运行“显示接口状态”到Cisco / Alcatel交换机(如果可能的话,为jsch)

时间:2018-10-29 09:41:12

标签: java ssh

我需要通过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();

我需要连接,发送命令并记录命令结果。如果我手动执行此操作,则结果正常。我在虚拟机中尝试我的代码,结果与物理交换机不同。

1 个答案:

答案 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
}