【问题标题】:Get output from Telnet从 Telnet 获取输出
【发布时间】:2011-07-15 16:51:02
【问题描述】:

有人知道如何用 Java 读取 telnet 的输出吗?我能够连接到 服务器并执行一些命令,但我需要该命令的输出。

例如,命令 ls 给出了所有文件和目录的列表,所以我想得到它 列出并在我的 Java 代码中使用它。

我曾尝试过用于 Telnet 的 3rd 方库,例如 apache-commons 和 sinetfactory(www.jscape.com ) 但我的情况没有结果...

伊戈尔

【问题讨论】:

    标签: java telnet


    【解决方案1】:

    您可以读取进程InputStream 的输出,如下所示:

    final Process process =
        new ProcessBuilder("path/to/telnet", "and", "some", "args").start();
    final AtomicBoolean running = new AtomicBoolean(true);
    final InputStream processData = process.getInputStream();
    
    // start a thread to read process output
    new Thread(new Runnable(){
    
        @Override
        public void run(){
            while(running.get()){
    
                // read processData
    
            }
    
        }
    }).start();
    process.waitFor();
    running.set(false);
    

    【讨论】:

    • 我可以使用 Process 或 ProcessBuilder 类启动 telnet 会话,但是我无法在该进程上执行命令。我尝试打开进程的输出流,但它没有用。例如 Process p = Runtime.getRuntime().exec("telnet ip port"); PrintWriter out = new PrintWriter(p.getOutputStream()); out.println("ls"); out.close();但什么也没收到……
    • 不确定您是否仍然需要解决方案,但我做了一些 simple(并且范围极其有限)可能会有所帮助
    【解决方案2】:

    我知道您要求的是 java 解决方案,但是expect 脚本语言是为这种类型的东西开发的。 http://expect.sourceforge.net/

    如果必须是java,那么请无视。

    【讨论】:

      猜你喜欢
      • 2016-04-30
      • 2021-04-16
      • 2021-04-04
      • 1970-01-01
      • 2012-04-05
      • 1970-01-01
      • 2011-01-15
      • 2020-04-18
      • 2013-03-28
      相关资源
      最近更新 更多