zoukankan      html  css  js  c++  java
  • Java操作Linuxshell并且获取返回值

    /**
    *
    */
    package com.king.weixin.util;
    import java.io.BufferedReader;
    import java.io.InputStream;
    /**
    * @author kingstudy@vip.qq.com
    * @version 创建时间:2018年6月30日 上午11:28:01
    * @ClassName LinuxUtil
    * @Description 操作Linux系统的相关工具类
    */
    import java.io.InputStreamReader;
    import java.io.LineNumberReader;
    import java.nio.charset.Charset;
    import java.util.Properties;

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;

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

    public class LinuxUtil {
    private static final Logger log = LoggerFactory.getLogger(LinuxUtil.class);

    private static ChannelExec channelExec;

    private static Session session = null;

    private static int timeout = 60000;
    // 测试代码
    public static void main(String[] args){
    try{
    versouSshUtil("192.168.1.1","root","King",22);
    //System.out.println(1);
    runCmd("cat /dev/urandom |od -x | tr -d ' '| head -n 1","UTF-8");
    // System.out.println(2);
    }catch (Exception e){
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    //java 操控Linux
    /**
    * 连接远程服务器
    * @param host ip地址
    * @param userName 登录名
    * @param password 密码
    * @param port 端口
    * @throws Exception
    */
    public static void versouSshUtil(String host,String userName,String password,int port) throws Exception{
    log.info("尝试连接到....host:" + host + ",username:" + userName + ",password:" + password + ",port:"
    + port);
    JSch jsch = new JSch(); // 创建JSch对象
    session = jsch.getSession(userName, host, port); // 根据用户名,主机ip,端口获取一个Session对象
    session.setPassword(password); // 设置密码
    Properties config = new Properties();
    config.put("StrictHostKeyChecking", "no");
    session.setConfig(config); // 为Session对象设置properties
    session.setTimeout(timeout); // 设置timeout时间
    session.connect(); // 通过Session建立链接
    }

    /**
    * 在远程服务器上执行命令
    * @param cmd 要执行的命令字符串
    * @param charset 编码
    * @throws Exception
    */
    public static String runCmd(String cmd,String charset) throws Exception{
    channelExec = (ChannelExec) session.openChannel("exec");
    channelExec.setCommand(cmd);
    channelExec.setInputStream(null);
    channelExec.setErrStream(System.err);
    channelExec.connect();
    InputStream in = channelExec.getInputStream();
    BufferedReader reader = new BufferedReader(new InputStreamReader(in, Charset.forName(charset)));
    StringBuffer sb=new StringBuffer();
    String buf = null;
    while ((buf = reader.readLine()) != null){
    //System.out.println("111");
    sb.append(buf);
    }
    //System.out.println(sb.toString());
    reader.close();
    channelExec.disconnect();
    return sb.toString();
    }
    }

  • 相关阅读:
    nginx 与 lua 开发笔记
    使用openresty + lua 搭建api 网关(一)安装openresty ,并添加lua模块
    Java使用POI接口读写Excel文件方法
    React常用的库安装
    Android手机捉包
    ffmpeg压缩视频
    用 TypeScript 写 React & Redux
    yarn使用
    Angular 组件引入其他css不生效
    Webstrom技巧
  • 原文地址:https://www.cnblogs.com/wxjnew/p/9247226.html
Copyright © 2011-2022 走看看