我正在尝试从java运行unix shell脚本,该脚本可在unix服务器的特定目录中找到。该脚本接受参数。我能够建立SFTP连接,并成功地到达了包含shell脚本的目录。如何运行此脚本以及如何传递参数?在https://netjs.blogspot.com/2016/10/how-to-run-shell-script-from-java-program.html上很少引用 但是这里的脚本在本地系统上可用。就我而言,该脚本位于服务器上,并且还接受参数。
答案 0 :(得分:3)
SFTP
是文件传输协议(Secure File Transfer Protocol
)。它使您可以与服务器之间传输文件。但是,它不不会让您在远程服务器上执行任何脚本,因为这不是它设计的目的。
如果要在远程服务器中执行脚本,则需要:
ssh
连接您需要使用JSch
之类的库,例如here's。
答案 1 :(得分:1)
另一种方法是通过SSH执行命令。
您可以在本地主机(我的示例为test.sh
)中创建一个新脚本,其内容如下所示,现在您可以像从引用中获取代码一样执行它。
ssh user@server "sh your-shell-script-in-server.sh"
了解更多信息,请访问 https://www.cyberciti.biz/faq/unix-linux-execute-command-using-ssh/
Java来源:
String[] cmd = new String[] { "/bin/sh", "test.sh" };
try {
Process pr = Runtime.getRuntime().exec(cmd);
int rs = pr.waitFor();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
答案 2 :(得分:0)
您的Java函数基于Runtime
对象。我不确定,但我认为您无法获得远程计算机的Runtime
对象,因此您需要将CLASS文件放在该远程计算机上并在该计算机上启动。