当前位置: 首页 > 知识库问答 >
问题:

命令输出不可用

窦宏旷
2023-03-14

我试图使用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()始终返回零,表示该命令没有输出。

蒂亚!

共有1个答案

王才英
2023-03-14

请尝试下面的代码-测试和工作

    Channel channel = session.openChannel("shell");
    OutputStream ops = channel.getOutputStream();
    PrintStream ps = new PrintStream(ops);
    channel.connect();
    ps.println("pwd");
    ps.println("exit");
    ps.flush();
    ps.close();

    InputStream in = channel.getInputStream();
    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    System.out.println("Opening...");

    String jarOutput;
    while ((jarOutput = reader.readLine()) != null)
        System.out.println(jarOutput);
    reader.close();
    channel.disconnect();

输出-

开场白
user@host:~

 类似资料:
  • 问题内容: 我正在编写一项服务,该服务必须将已执行命令的输出流式传输到父级和日志中。当过程很长时,问题是给我最终的(字符串)结果。 是否可以给出正在发生的事情的部分输出,例如在shell中 PS仅输出将是: 但就我而言,这还不够。 问题答案: 您发布的代码有效(执行了合理的命令)。 这是用Go语言编写的一个简单的 “长时间运行的任务” ,供您调用和测试您的代码: 编译它并作为命令来调用它。您将看到

  • 问题内容: 我遇到了一个困扰我几天的问题。我在Python 2.7.10中使用了Paramiko模块,我想向Brocade路由器发出多个命令,但仅返回给定命令之一的输出,如下所示: 如果要打印完整的输出,它将包含发布到路由器的所有内容,但是我只想查看show命令的输出。 谁能解决这个问题? 我想问的最后一件事。我想过滤变量并检查是否出现诸如“ up”或“ down”之类的字符串,但是由于输出中的所

  • 所有的, 请指导我,如何在dos窗口中打印下面命令的o/p?由于不熟悉dos命令,我不知道下面的字符串是什么意思? 提前谢谢

  • 我想使用OpenNLP来标记泰语单词。我下载了OpenNLP和Thai tokenize模型,并运行了以下程序 我将下载的放在我调用的目录中并运行以下内容。在中包含此文本。但是,我得到的输出只有这些文本: 我对OpenNLP非常陌生,如果有人知道如何从中获取输出,请告诉我。

  • 问题内容: 在Python中,通过而不是打扰其输出来调用命令的最短和标准方法是什么。 我尝试了,但是似乎返回了输出。我对此并不感到烦恼,我只需要在不使输出混乱的情况下静默运行程序即可。 如果有帮助,我正在打电话给我,我的意图只是打电话给我。 问题答案: p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

  • 现在,你已经在运用 MATLAB 的命令行了,输入命令语句,就会看到结果出现在命令窗口中。 这一节介绍如何: 控制输出值的格式 用MATLAB命令隐藏输出 在命令行中输入长的命令 编辑命令行