java - 通过 Java 从 Windows 远程发送命令到 Linux

标签 java linux windows mqtt

我到处搜索但找不到有效的解决方案。

我的网络中有一台 Linux Debian 机器,它作为 Mqtt Broker 运行。我想编写一个java程序来从另一台计算机(Windows)向代理发送sub和pub命令。有没有办法从 Windows 计算机发送 Linux 命令?

如果是,是否可以通过java代码来完成并收到正确的输出?

我尝试了以下方法:

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class AA
{
    public static void main(String[] args) throws Exception
    {
        ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c",
                "ssh 10.20.0.30 -l username"); // Ip of the Mqtt Broker
        builder.redirectErrorStream(true);
        Process p = builder.start();
        BufferedReader r = new BufferedReader(
                new InputStreamReader(p.getInputStream()));
        String line;
        while (true)
        {
            line = r.readLine();
            if (line == null)
            {
                break;
            }
            System.out.println(line);
        }
    }
}

输出为:

Pseudo-terminal will not be allocated because stdin is not a terminal.

我觉得如果添加正确的命令,这可能会起作用。

我听说过像“Eclipse Paho”这样的库,但我想知道我的解决方案是否可行。

提前致谢!

最佳答案

如果您采用这种方法,您的解决方案就可以发挥作用 Run a command over SSH with JSch

但你提到了 MQTT。因此你不需要使用 ssh。您可以连接到 mqtt 并使用它来运行命令。这是 mqtt 连接示例 https://www.hivemq.com/blog/how-to-get-started-with-mqtt

关于java - 通过 Java 从 Windows 远程发送命令到 Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51532585/

相关文章:

java - 如何从 java 类中调用不带参数作为表类型的过程 (2)

java - 如何检测我的 bean 中的(无意的)只写属性?

linux - 如何修改文本的每一行?

c - 在 Windows 中从串口读取

windows - 有没有办法重新加载 greasemonkey 脚本?

java - 性能调整 : com. mchange.v2.resourcepool.Basicresourcepool.Awaitavailable() 方法占用应用程序的大部分运行时间

java - 如何为没有源代码的类生成 JavaDoc 文档?

c++ - C 编译 : error: stray '\4' in program ; octal flow?

c++ - 同步 1 个生产者和 1 个以上的消费者(多线程)

c++ - 简单的 FTP 客户端身份验证?