当前位置: 首页 > 面试题库 >

在Java中,将命令发送到另一个命令行程序

卢深
2023-03-14
问题内容

我在Windows
XP上使用Java,并且希望能够将命令发送到另一个程序,例如telnet。我不想简单地执行另一个程序。我要执行它,然后在它运行后向它发送一系列命令。这是我要执行的操作的代码,但是无效:(如果取消注释,并将命令更改为“
cmd”,它将按预期工作。请帮助。)这是一个简化的示例。在生产中,将发送更多命令,因此 请不要建议调用“ telnet localhost”。

    try
    {
        Runtime rt = Runtime.getRuntime();

        String command = "telnet";
        //command = "cmd";
        Process pr = rt.exec(command);

        BufferedReader processOutput = new BufferedReader(new InputStreamReader(pr.getInputStream()));
        BufferedWriter processInput = new BufferedWriter(new OutputStreamWriter(pr.getOutputStream()));

        String commandToSend = "open localhost\n";
        //commandToSend = "dir\n" + "exit\n";

        processInput.write(commandToSend);
        processInput.flush();

        int lineCounter = 0;
        while(true)
        {
            String line = processOutput.readLine();
            if(line == null) break;
            System.out.println(++lineCounter + ": " + line);
        }

        processInput.close();
        processOutput.close();
        pr.waitFor();
    }
    catch(Exception x)
    {
        x.printStackTrace();
    }

问题答案:

这看起来还可以,因为它不会产生那么多的输出,但是您应该真正在单独的线程中进行读取和写入,这样它才不会填满缓冲区并阻止在等待下一步之前等待您读取。

因此,如果到达刷新发送给它的命令的地步,请通过将要发送的文本传递给命令中的标准输入,来找出Windows
telnet客户端是否支持从标准输入而不是从控制台接收命令提示。

例如,echo dir c:\ | cmd导致cmd运行,列出c:驱动器内容并退出,其行为与您dir c:\在控制台中键入的行为大致相同。但是echo open localhost | telnet会导致telnet清除屏幕然后退出,而不是像在控制台中键入一样进行操作。由于telnet需要掩盖用户输入的密码,因此很可能是使用控制台API而不是从标准输入中读取。它的帮助不会列出任何命令参数来告诉它从标准输入中读取内容,因此也许您需要使用更适合脚本编写的telnet实现。



 类似资料:
  • 问题内容: 我当前的部分看起来像这样: …这意味着我可以运行来启动服务器。到现在为止还挺好。 但是,我希望能够运行类似的东西并将参数传递给(例如=> )。这可能吗? 问题答案: 编辑: 可以将args传递给npm2.0.0 语法如下: 注意必要的。需要将传递给命令本身的参数和传递给脚本的参数分开。 所以如果你有 那么以下命令将是等效的: => => 为了读取命名参数,最好使用yargs或[mini

  • 问题内容: 我已经使用过智能卡,并且熟悉APDU命令(在 ISO / IEC 7816 和 Global Platform 规范中定义)。 现在,我想知道是否有什么方法可以将APDU命令发送到插入手机的USIM / SIM卡?(安装了Android v4.4.4 kitkat的三星A3。) 我已经在Google中搜索过,发现了一些相关的主题和工具,名为 SIM Toolkit Applicatio

  • 全局配置 你可以获得命令行帮助通过pyspider --help和pyspider all --help来获得帮助。 全局的选项适用于所有的子命令 ``` Usage: pyspider [OPTIONS] COMMAND [ARGS]... A powerful spider system in python. Options: -c, --config FILENAME

  • 问题内容: 尽管它可能被推荐为使用IDE和IDE来编写高级Java项目的代码,但我个人更喜欢几乎完全运行命令行(使用gedit作为文本编辑器)。因此,请不要只是告诉我“只用月食!” 或:P 我的问题是通过命令在Java中创建包的方法是什么。 我不是在谈论打包在命令行中运行的应用程序,而是在命令行制作一个软件包。我在制作文本文件吗?我在建立目录吗? 相关地,如何在不使用IDE的情况下链接到相关的库和

  • 我想制作一个打开另一个java程序的程序。如何在编译和运行java程序时运行/执行cmd命令。 例如c:\Users\Burnok 如何在java程序中实现这一点?请帮忙。 我尝试了这段代码,但编译成功,但如果我尝试运行HelloWorld。类它表示无法找到或加载主类。 以下是java src/HelloWorld stderr的错误:错误:无法找到或加载主类src。你好世界

  • 我一直在试图找到一种方法,从我的PC(Windows 7)向Arduino Uno R3发送串行命令。我一直在做这个简单的程序,你应该通过USB电缆发送一个简单的“1”,以便打开车载LED。我的Arduino代码应该可以工作(我知道的,但我会确保上传它)。我一直在尝试使用Python和pySerial发送此命令,但我似乎无法让pySerial正常工作。我也尝试过使用CMD,但当我输入命令(ECHO