【发布时间】:2018-09-25 00:38:37
【问题描述】:
我正在尝试执行一个 kafka 脚本来检索主题、消费者组和滞后信息。我不断收到错误消息,并通过此论坛和其他论坛进行搜索,发现信息相互矛盾。有人说在 Unix 上从 Windows 执行远程脚本是不可能的,而其他人则给出了一些关于如何尝试纠正这个错误的建议。我能够连接并运行一个简单的 ping 命令并能够检索响应。也许我在这里遗漏了一个简单的被忽略的错误。
代码如下:
try {
jsch.setKnownHosts("C:\\Users\\.ssh\\ssh_host_rsa_key.pub");
Session session = jsch.getSession(uname, host, 22);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setPassword(pword);
session.connect();
Process p = Runtime.getRuntime().exec("./usr/kafka/bin/
kafka-consumer-groups.sh --bootstrap-server 192.xxx.xx.xxx:9092
--describe -group OPSII");
InputStream scriptStdout = p.getInputStream();
BufferedReader scriptReader= new BufferedReader(new
InputStreamReader(scriptStdout));
String scriptOutput = scriptReader.readLine();
StringBuilder sb = new StringBuilder();
while ((scriptOutput = scriptReader.readLine())!= null) {
sb.append(scriptOutput + "\n");
}
scriptStdout.close();
错误:
Exception in thread "main" java.io.IOException: Cannot run program
"./usr/kafka/bin/kafka-consumer-groups.sh": CreateProcess
error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
我已经确认脚本在远程 unix 机器上运行并且目录是正确的。可能是格式吗?应该是“//”而不是“/”吗?究竟什么会导致这个错误?请这不是一个重复的问题,因为其他提议的解决方案都不起作用。
【问题讨论】:
-
尝试使用
cd对该目录进行调试。之后尝试运行你的脚本。 -
检查你的用户是否对目录有执行权限...
-
当我尝试使用 cd 时,我得到以下信息:无法运行程序“cd”:....为什么 'ping www.google.com' 会起作用?
-
删除句号。
("/usr/kafka -
为什么需要远程脚本?该消费者组命令可以用 Java 编写。所有的 Kafka shell 脚本实际上都是 Java 类本身
标签: java unix apache-kafka jsch runtime.exec