【发布时间】:2019-11-22 23:15:19
【问题描述】:
我有一个我想从 java 执行的 shell 脚本。
sudo su - username -c "ssh -t remote_hostname df -k"
当您从命令提示符运行时,此 shell 脚本可以正常工作。 但是,当我使用流程构建器时,它不会返回任何内容。如果我执行以下操作: sudo su - 用户名 -c ssh -t remote_hostname;df -k
然后命令在我的本地机器上运行,而不是在远程机器上。
感谢任何反馈。
java代码
Process p;
ExecutorService es = null;
try {
p = Runtime.getRuntime().exec(test1.sh);
StreamGobbler sg = new StreamGobbler(p.getInputStream(), System.out::println());
es = Executors.newSingleThreadExecutor();
es.submt(sg);
int exitCode = p.waitfor();
assert exitCode == 0;
es.shutdown();
} catch (....) {
}
【问题讨论】:
-
你能显示你的代码吗?可能值得注意的是,如果您从 Eclipse 运行,通常不会设置您的 shell 环境
-
什么机器?您的 ssh 命令不包含一个,您确定该命令从提示符运行吗?
-
用java代码更新了内容
-
shel 脚本 tst1.sh 包含 sudo su - username -c "ssh -t remote_hostname df -k"
标签: java processbuilder