【问题标题】:Not able to send commands to the server from Java code无法从 Java 代码向服务器发送命令
【发布时间】:2010-12-08 09:17:32
【问题描述】:

我无法向服务器发送命令。但是,连接已建立,我可以执行“rm /usr/testfile”之类的简单操作。当我尝试执行“tail -f /opt/logs/applications/db/cbss.log >> cbsslog_tailed”之类的命令时。请帮我通过java代码执行tail命令。

【问题讨论】:

  • 我认为您需要详细说明您正在尝试做什么,从这个“服务器”开始,以及您希望如何连接到它。您是否尝试使用 telnet 或 ssh 等协议远程登录到机器,然后执行某些 shell 命令?恐怕这个问题并不清楚。
  • 嗨 Vineet,感谢您的回复。我正在开发一种工具来收集日志(从远程 Solaris 服务器)并将其保存在本地系统(Windows)中。为此,我使用 telnet 与远程服务器建立连接,并使用 Runtime.Exec() 发出命令。我想知道的是,Runtime.Exec() 是向服务器还是我们有其他方法也可以向远程服务器发出命令?正如我之前提到的,我无法通过发出命令来跟踪日志。请就此提出您的建议。谢谢 vineet
  • 但是,我尝试了其他一些方法,如下所示: public void sendCommand(String command) throws IOException{ if(command.endsWith("\n")) pw.print(command);否则 pw.println(command); pw.flush(); }
  • Command 是“rm /asdf”,我能够成功删除服务器中的文件 asdf。但是相同的方法不适用于 tail 命令。请就此向我提出建议。

标签: java client tail


【解决方案1】:

看起来您想通过从服务器运行的 Java shell 命令执行支持在 Linux 中进行 I/O 重定向。如何解决重定向问题请参考以下链接:

http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=4

以上链接中的示例程序是在Windows环境下使用的。但是,我认为它可以毫无问题地移植到 Linux 上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多