Java远程调用远程调用Shell脚本并获取输出信息【推荐】脚本并获取输出信息【推荐】
主要介绍了Java远程调用Shell脚本并获取输出信息,本文通过实例代码给大家介绍的非常详细,具有一定的参
考借鉴价值,需要的朋友可以参考下
1、添加依赖、添加依赖
<dependency>
<groupId>ch.ethz.ganymed</groupId>
<artifactId>ganymed-ssh2</artifactId>
<version>262</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
2、、Api说明说明
首先构造一个连接器,传入一个需要登陆的ip地址;
Connection conn = new Connection(ipAddr);
模拟登陆目的服务器,传入用户名和密码;
boolean isAuthenticated = conn.authenticateWithPassword(userName, passWord);
它会返回一个布尔值,true 代表成功登陆目的服务器,否则登陆失败。
打开一个session,执行你需要的linux 脚本命令;
Session session = conn.openSession();
session.execCommand(“ifconfig”);
接收目标服务器上的控制台返回结果,读取br中的内容;
InputStream stdout = new StreamGobbler(session.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
得到脚本运行成功与否的标志 :0-成功 非0-失败
System.out.println(“ExitCode: ” + session.getExitStatus());
关闭session和connection
session.close();
conn.close();
Tips:
通过第二部认证成功后当前目录就位于/home/username/目录之下,你可以指定脚本文件所在的绝对路径,或者通过cd导航到脚
本文件所在的目录,然后传递执行脚本所需要的参数,完成脚本调用执行。
执行脚本以后,可以获取脚本执行的结果文本,需要对这些文本进行正确编码后返回给客户端,避免乱码产生。
如果你需要执行多个linux控制台脚本,比如第一个脚本的返回结果是第二个脚本的入参,你必须打开多个Session,也就是多次
调用 Session sess = conn.openSession();, 使用完毕记得关闭就可以了。
3. 实例:工具类实例:工具类
public class SSHTool {
private Connection conn;
private String ipAddr;
private Charset charset = StandardCharsets.UTF_8;
private String userName;
private String password;
public SSHTool(String ipAddr, String userName, String password, Charset charset) {
this.ipAddr = ipAddr;
this.userName = userName;
this.password = password;
if (charset != null) {
this.charset = charset;
}
}
/**
* 登录远程Linux主机
*
评论1
最新资源