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();
}
}

posted on 2018-06-30 15:11 kingstudy 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/wxjnew/p/9247226.html

Java操作Linuxshell并且获取返回值相关推荐

  1. bat 命令行执行 java(jar)获取返回值 【ERRORLEVEL、System.exit(code)】

    ■前言 bat调用java,如何判断java运行正常终了 ■实现 1.命令行中, 使用 %ERRORLEVEL% ↓ERRORLEVEL的介绍 https://blog.csdn.net/sxzlc/ ...

  2. java 调用linux 脚本并获取返回值

    大家好,我是烤鸭: 今天分享下java 调用 shell脚本 并获取返回值. 代码实践 String cmd = "df -h"; StringBuffer sb = new St ...

  3. oracle java存储过程返回值_java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)...

    java程序调用Oracle 存储过程 获取返回值(无返回,非结 果集,结果集) oracle中procedure是不能有返回值的,要想返回值,就得有 输出参数,同样要想返回记录集,可以把游标类型作为 ...

  4. 获取SQL-SERVER数据库insert into操作的主键返回值

    插入一条记录后想要立刻获取其数据表中的主键返回值.这个主键是自动生成的,其实实现的方式有很多,比如再进行一次查询,获取出来.或者在插入数据之前取出最大值,在最大值上面加一等等,方法很多,但是有些很不方 ...

  5. 使用java运行Python脚本并获取返回值

    java运行Python脚本并获取返回值 java运行Python脚本并获取返回值 使用runtime类实现在java中运行Python脚本,话不多说,直接上代码 java运行Python脚本并获取返 ...

  6. Java--FutureTask原理与使用(FutureTask可以被Thread执行,可以被线程池submit方法执行,并且可以监控线程与获取返回值)...

    package com;import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; im ...

  7. python os.system重定向stdout到变量 ,同时获取返回值

    python os.system重定向stdout到变量 ,同时获取返回值 Python执行系统命令的方法 os.system(),os.popen(),commands 最近在做那个测试框架的时候发 ...

  8. c嵌入python类获取返回值

    先贴一段代码,再慢慢解释 #include <python2.7/Python.h> #include <stdio.h> #include <string.h> ...

  9. python 调用控制台并获取返回结果_Java调用Python脚本并获取返回值

    在Java程序中有时需要调用Python的程序,这时可以使用一般的PyFunction来调用python的函数并获得返回值,但是采用这种方法有可能出现一些莫名其妙的错误,比如ImportError.在 ...

  10. 获取键盘录入的5个int数,并存放到int数组arr中,输入前提示输入的是第几个值 * * 2.2 传递数组arr调用getNum(int[] arr)方法,获取返回值,并打印输出

    package Day05;import java.util.Scanner;/*** 2.定义main方法:* * 2.1 获取键盘录入的5个int数,并存放到int数组arr中,输入前提示输入的是 ...

最新文章

  1. RGB+Depth规则箱体测量方案
  2. Chrome DevTools 之 Network,网络加载分析利器
  3. html网页访问WebAPI中的方法遇到的问题
  4. C++ float的内存布局
  5. JGroups:无需额外基础架构的领导人选举
  6. CAS Client 3.2.1 配置详解
  7. Java用sqlit拆分小数_如何将SQLite列中的分隔值拆分为多列
  8. 多用as少用强制类型转换
  9. CSS3 盒阴影 box-shadow属性
  10. 儿童心理健康的十项注意
  11. linux核心设计ebpf,Linux eBPF介绍
  12. 票据html模板,票据库.html · 胡凯锋/API_ML_AI_Note - Gitee.com
  13. js获取PC设备信息,js获取手机设备信息,最全
  14. 万能RecyclerView分割线扩展
  15. LaTeX表格行宽、列间距设置
  16. 齐二TK6916/20/26/32系列数控落地铣镗床简介7
  17. 拿什么来保障程序员的工作?
  18. 放弃美国高校博导身份,选择在硅谷创业,只因有颗“不安分”的心
  19. 53、Gif 控件GifView 的使用,播放gif图片
  20. arduino 读取模拟电压_MQ2气体/烟雾传感器如何工作及其与Arduino接口

热门文章

  1. TIC大咖说|氦氪云:用云服务推动智能家居发展
  2. java 基础数据结构源码详解及数据结构算法
  3. 《NLTK基础教程——用NLTK和Python库构建机器学习应用》——2.10 练习
  4. Android存储(1)-- 你还在乱用Android存储嘛!!!
  5. 日常的SQL 语句使用
  6. windows下用notepad++配置go语言开发环境
  7. 商品库存的扣除过程,如何防止超卖?
  8. 阿里十大最受开发者欢迎的工具!
  9. 大专学历造假改成了 211 拿到了抖音 Offer
  10. 注意,GitHub发布重大更新,关系到所有程序员!