黑马程序员技术交流社区
标题:
【上海校区】java远程调用shell脚本
[打印本页]
作者:
不二晨
时间:
2019-3-8 10:20
标题:
【上海校区】java远程调用shell脚本
java远程调用shell脚本
1.添加依赖
<!-- ssh远程调用的依赖 -->
<dependency>
<groupId>ch.ethz.ganymed</groupId>
<artifactId>ganymed-ssh2</artifactId>
<version>build210</version>
</dependency>
2.编写远程调用类
public class RemoteShellExecutor {
private Connection conn;
private String ip;
private String username;
private String password;
private static final int TIME_OUT = 0;// 表示不超时
/**
* 构造函数
*
* @param ip 远程ip
* @param username 远程机器用户名
* @param password 远程机器密码
*/
public RemoteShellExecutor(String ip, String username, String password) {
this.ip = ip;
this.username = username;
this.password = password;
}
/**
* 登录
*
* @return
* @throws IOException
*/
private boolean login() throws IOException {
conn = new Connection(ip);
conn.connect();
return conn.authenticateWithPassword(username, password);
}
/**
* 执行脚本
*
* @param shell
* @return
* @throws Exception
*/
public int exec(String shell) throws Exception {
int ret = -1;
try {
if (login()) {
Session session = conn.openSession();
session.execCommand(shell);
session.waitForCondition(ChannelCondition.EXIT_STATUS, TIME_OUT);
ret = session.getExitStatus();
} else {
throw new Exception("登录远程机器失败" + ip); // 自定义异常类 实现略
}
} finally {
if (conn != null) {
conn.close();
}
}
return ret;
}
}
3.调用程序
public class Test{
public static void main(String[] args) {
try {
RemoteShellExecutor executor = new RemoteShellExecutor("ip", "root", "123456");
executor.exec("/Users/zhangzhiqiang/Documents/my_projects/bdexample/springboot-mybatis-demo/apidoc.sh");
} catch (Exception e) {
e.printStackTrace();
}
}
}
---------------------
【转载】
作者:张行之
来源:CSDN
原文:
https://blog.csdn.net/qq_33689414/article/details/81812716
版权声明:本文为博主原创文章,转载请附上博文链接!
作者:
不二晨
时间:
2019-3-11 15:24
奈斯,感谢分享
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2