2016-04-04 223 views
0

我试图在使用JAVA API的远程服务器上运行shell脚本。远程服务器有身份验证,所以我必须通过我的用户名和密码登录到它。 我没有这些机器(无论是来源还是目的地)的权利来安装'sshpass',以防您打算提供该解决方案。使用JAVA API在远程服务器上执行shell脚本

这样做的最好方法是什么?

+0

您是否仅限于标准JDK? – KevinO

+0

是的,我正在使用jdk 8. – david419

+0

这是通过ssh根据您对sshpass的评论吗?恕我直言,在远程计算机上调用脚本的最佳方式是使用[JSch](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved= 0ahUKEwj1-daRuvXLAhVBVGMKHRz-AW8QFggcMAA&URL = HTTP%3A%2F%2Fwww.jcraft.com%2Fjsch%2F&USG = AFQjCNFEETFDy_PvFq6a3L_sqnj_u5o-ZQ&SIG2 = vnk4MnTC284FH-yj7_ddZQ&BVM = bv.118443451,d.cGc)。我们始终在工作中使用JSch。如果从头开始编写,有很多事情要考虑。那么,您是否仅限于标准JDK中的类,还是可以使用外部库? – KevinO

回答

4

JSch是一个优秀的库,用于支持通过ssh进行远程连接,包括执行远程命令(或shell脚本)。

有很多关于如何在JSch Examples, 处使用JSch的例子,但要特别注意Exec

在它的基础上,什么人做的是:

  1. 获取证书
  2. 创建Session
  3. 打开Session
  4. 处理流根据需要

Channel在输入时,OP还发布了一个额外的问题和示例。 http://www.codesandscripts.com/2014/10/java-program-to-execute-shell-scripts-on-remote-server.html的例子看起来也不错。

至于推脚本到服务器,开始通过使用scpsftp(我们找到更可靠后者)移动文件到远程机器,一定要送chmod u+xexec ,然后调用脚本。

相关问题