Как запустить «показывать состояние интерфейсов» для коммутатора Cisco / Alcatel через Java (JSCH, если это возможно) - PullRequest
0 голосов
/ 29 октября 2018

Мне нужно запустить show interfaces status для коммутатора Cisco / Alcatel через Java (jsch, если это возможно)

Я использую SSH для доступа к этому swith. после того, как я попробую

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();

Я пытаюсь это сделать (ОК, если я запускаю команду вручную в консоли)

Channel channel = session.openChannel("shell");
channel.setInputStream(null);
channel.connect();

Мне нужно подключиться, отправить команду и записать результат команды. Если я выполню это вручную, результат будет в порядке. Я пробую свой код на виртуальной машине, и результат отличается от физического коммутатора.

1 Ответ

0 голосов
/ 29 октября 2018

Вы можете попробовать это:

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...