资源简介

使用jcraft jar包登录linux系统,并读取执行shell命令结果,含jcraft jar包和java实例代码。

资源截图

代码片段和文件信息

package linux;

import java.io.InputStream;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;

/**
 * java 登录linux系统,并读取执行shell命令结果
 * @author wanghonggang
 * 2018-10-30
 */
public class LinuxShell {

private Session session;

/**
 * 远程登录
 * @param host 主机ip
 * @param port 端口号,默认22
 * @param user 主机登录用户名
 * @param password 主机登录密码
 * @return
 * @throws JSchException
 */
public void login(String host int port String userString password)  {
try {
JSch jsch = new JSch();
session = jsch.getSession(user host port);
session.setPassword(password);
// 设置第一次登陆的时候提示,可选值:(ask | yes | no)
session.setConfig(“StrictHostKeyChecking“ “no“);
// 连接超时
session.connect(1000*10);

} catch (JSchException e) {
System.out.println(“登录时发生错误!“);
e.printStackTrace();
}
}

/**
 * 执行shell脚本
 * @param command shell命令脚本
 * @return
 * @throws Exception
 */
public String executeShell(String command) throws Exception {

byte[] tmp = new byte[1024]; 
StringBuffer resultBuffer = new StringBuffer(); // 命令返回的结果

Channel channel = session.openChannel(“exec“);
ChannelExec exec = (ChannelExec) channel;
// 返回结果流(命令执行错误的信息通过getErrStream获取)
InputStream stdStream = exec.getInputStream();

exec.setCommand(command);
exec.connect();

try {
// 开始获得SSH命令的结果
while (true) {
while (stdStream.available() > 0) {
int i = stdStream.read(tmp 0 1024);
if (i < 0) break;
resultBuffer.append(new String(tmp 0 i));
}
if (exec.isClosed()) {
// System.out.println(resultBuffer.toString());
break;
}
try {
Thread.sleep(200);
} catch (Exception e) {
e.printStackTrace();
}
}
} finally {
//关闭连接
channel.disconnect();
}

return resultBuffer.toString();
}

/**
 * 关闭连接
 */
public void close() {
if (session.isConnected())
session.disconnect();
}

/**
 * 测试
 * @param args
 */
public static void main(String[] args) {

String ip=“192.168.1.168“;
String username=“whg“;
String password=“whg“;

LinuxShell linux = new LinuxShell();

linux.login(ip 22 usernamepassword);
String command = “df -h“;
try {
String result = linux.executeShell(command);
System.out.println(result);
linux.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件      280515  2018-10-30 10:42  jsch-0.1.54.jar
     文件        2788  2018-10-30 13:54  LinuxShell.java

评论

共有 条评论