java运行linux shell脚本,Java执行linux命令及shell脚本

import java.io.*;

import java.util.*;

import org.apache.log4j.Logger;

import com.jcraft.jsch.*;

public class SshServerUtils {

private static final Logger log = Logger.getLogger(SshServerUtils.class);

private static Session session;

//连接服务器

private static void connect(String username, String passwd, String host, int port) {

try {

JSch jsch = new JSch();

//获取sshSession

session = jsch.getSession(username, host, port);

//添加密码

session.setPassword(passwd);

Properties sshConfig = new Properties();

//严格主机密钥检查

sshConfig.put("StrictHostKeyChecking", "no");

session.setConfig(sshConfig);

//开启sshSession连接

session.connect();

log.info("Server connection successful.");

} catch (JSchException e) {

e.printStackTrace();

}

}

//执行相关命令

public static String execCmd(String command, String username, String passwd, String host, int port, String outFilePath) {

String resultJson = null;

ChannelExec channelExec = null;

if (command != null) {

try {

connect(username, passwd, host, port);

channelExec = (ChannelExec) session.openChannel("exec");

// 设置需要执行的shell命令

channelExec.setCommand(command);

log.info("linux命令:" + command);

channelExec.setInputStream(null);

channelExec.setErrStream(System.err);

channelExec.connect();

//读数据

resultJson = getServerData(host, port, username, passwd, outFilePath);

} catch (JSchException e) {

e.printStackTrace();

} finally {

if (null != channelExec) {

channelExec.disconnect();

}

}

}

return resultJson;

}

// 从 服务器 获取 数据

private static String getServerData(String host, int port, String username,String password, String filePath) {

ChannelSftp sftp = null;

StringBuffer buffer = new StringBuffer();

try {

if (!session.isConnected()) {

connect(username, password, host, port);

}

//获取sftp通道

Channel channel = session.openChannel("sftp");

//开启

channel.connect();

sftp = (ChannelSftp) channel;

log.info("Connected to " + host + ".");

//获取生成文件流

InputStream inputStream = sftp.get(filePath);

BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));

String line = "";

while ((line = in.readLine()) != null) {

buffer.append(line);

}

//关闭流

inputStream.close();

in.close();

log.info(" 执行结果为: " + buffer.toString());

} catch (IOException e) {

e.printStackTrace();

} catch (JSchException e) {

e.printStackTrace();

} catch (SftpException e) {

e.printStackTrace();

} finally {

if (null != sftp) {

sftp.quit();

}

closeSession();

}

return buffer.toString();

}

public static void closeSession() {

if (session != null) {

session.disconnect();

}

}

public static String getUUID() {

UUID uuid = UUID.randomUUID();

String str = uuid.toString();

return str.replace("-", "");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值