我到处搜索但找不到有效的解决方案。
我的网络中有一台 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/