чтения вывода из оболочки Linux и хранить его в объект JSON

голоса
1

Я хотел бы прочитать JSon вывод команды на Linux оболочки.

Я использовал JCraft установить соединение SSH и использовать канал для выполнения команды Telnet.

 String host=<host>;
        String user=<user>;
        String password=<pass>;
        String command1=telnet <ip>;
        try{

            java.util.Properties config = new java.util.Properties(); 
            config.put(StrictHostKeyChecking, no);
            JSch jsch = new JSch();
            Session session=jsch.getSession(user, host, 22);
            session.setPassword(password);
            session.setConfig(config);
            session.connect();
            System.out.println(Connected);

            Channel channel=session.openChannel(exec);
            ((ChannelExec)channel).setCommand(command1);
            channel.setInputStream(null);
            ((ChannelExec)channel).setErrStream(System.err);
            InputStream in=channel.getInputStream();
            channel.connect();
            DataOutputStream dataOut = new DataOutputStream(channel.getOutputStream());

            byte[] tmp=new byte[1024];
            int count = 0;
            int count1 = 0;
            while(true){
              while(in.available()>0){
                int i=in.read(tmp, 0, 1024);
                if(i<0)break;
                System.out.println(new String(tmp, 0, i));
                String asksForUsername = new String(tmp, 0, i);
                if(asksForUsername.contains(login) && count <= 0) {
                    dataOut.writeBytes(<username>);
                    dataOut.writeBytes(\n);
                    dataOut.flush();
                    count++;
                }
                if(asksForUsername.contains(Password) && count1 <= 0) {
                    dataOut.writeBytes(<password>);
                    dataOut.writeBytes(\n);
                    dataOut.flush();
                    count1++;
                }
                if(count == 1 && count1 == 1) {
                    count++;
                    count1++;

                        dataOut.writeBytes(<shell command to get the json response>);

                    dataOut.writeBytes(\n);
                    dataOut.flush();



                }


              }
              if(channel.isClosed()){
                System.out.println(exit-status: +channel.getExitStatus());
                break;
              }
              try{Thread.sleep(1000);}catch(Exception ee){}
            }
            channel.disconnect();
            session.disconnect();
            count = 0;
            count1 = 0;

        }catch(Exception e){
            e.printStackTrace();
        }

После выполнения команды, чтобы получить ответ JSON с помощью байтов записи, мне нужно прочитать и присвоить выводе его в объект JSON? Это возможно.

Заранее спасибо.

С уважением

Задан 28/03/2017 в 14:23
источник пользователем
На других языках...                            


1 ответов

голоса
0

Вам нужно добавить следующие строки кода, чтобы получить и прочитать сообщение

// Возвращает InputStream для этого канала. Все данные, поступающие в виде сообщений от удаленной стороны могут быть считаны из этого потока. InputStream в = channelExec.getInputStream ();

// Чтение выходного сигнала из входного потока мы установили выше BufferedReader читателя = новый BufferedReader (новый InputStreamReader (в));

Ответил 28/03/2017 в 16:55
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more