最近经常会用到java到指定机器上执行终端命令并且获得返回结果,所以借此机会来记录一下

1.首先通过ip,用户名,密码链接到远程服务器上,然后执行终端命令

userName:主机的用户名,password:密码,ipAddr:主机ip地址,cmd:你要执行的命令

    public String execute(String userName, String password, String ipAddr, String cmd) {String result = "";boolean isAuthed = false;try {if (InetAddress.getByName(ipAddr).isReachable(1500)) {Connection conn = new Connection(ipAddr);conn.connect();isAuthed = conn.authenticateWithPassword(userName, password);if (isAuthed) {Session session = conn.openSession();//打开一个会话session.execCommand(cmd);result = processStdout(session.getStdout());//如果为得到标准输出为空,说明脚本执行出错了if (StringUtils.isBlank(result)) {log.info("得到标准输出为空,链接conn:" + conn + ",执行的命令:" + cmd);result = processStdout(session.getStderr());} else {log.info("执行命令成功,链接conn:" + conn + ",执行的命令:" + cmd);}session.close();conn.close();}}} catch (IOException e) {e.printStackTrace();}return result;}

2.获取终端命令的返回结果

    private static String processStdout(InputStream in) {InputStream stdout = new StreamGobbler(in);StringBuilder buffer = new StringBuilder();try {BufferedReader br = new BufferedReader(new InputStreamReader(stdout, StandardCharsets.UTF_8));String line;while ((line = br.readLine()) != null) {buffer.append(line).append("\n");}} catch (IOException e) {log.error("解析脚本出错:" + e.getMessage());}return buffer.toString();}

需要注意的是,如果想输入多条命令,命令之间可以用" && "连接,比如 "cd /home && ls"

java在远程服务器上执行终端命令并获得返回结果相关推荐

  1. JAVA远程连接ssh异步,SSH-2实现java连接远程服务器并执行脚本命令

    参考文档: maven jar包:https://mvnrepository.com/artifact/ch.ethz.ganymed/ganymed-ssh2 Ganymed SSH2 API文档 ...

  2. shell实现批量在多台windows服务器上执行同一命令并获取返回结果

    1.    需求 在对windows服务器的运维当中,如果要查看当前的主机名.资源使用.软件安装情况等,大家是怎么操作呢,是登进去鼠标挨着点击查看,还是通过命令呢?貌似命令的方法比较专业一点.但是,如 ...

  3. java解压服务器文件夹,java获取远程服务器上的文件夹

    java获取远程服务器上的文件夹 内容精选 换一换 安装X722板载网卡驱动软件包,使裸金属服务器支持在v5服务器上下发.其他类型服务器可跳过此步骤.本文以Windows Server 2016为例, ...

  4. java拷贝远程服务器上文件,java拷贝远程服务器上文件

    java拷贝远程服务器上文件 内容精选 换一换 在Windows模式下,调试功能暂不可用.为支持多交叉架构的调试场景,需要在安装MindStudio的服务器(UI Host)上安装gdb-multia ...

  5. java 跨服务器 文件拷贝,java拷贝远程服务器上文件

    java拷贝远程服务器上文件 内容精选 换一换 已成功登录Java性能分析.待安装Guardian的服务器已开启sshd.待安装Guardian的服务器已安装JRE,JRE版本要求为Huawei JD ...

  6. java 获取服务器上文件,java获取远程服务器上的文件

    java获取远程服务器上的文件 内容精选 换一换 已成功登录Java性能分析.待安装Guardian的服务器已开启sshd.待安装Guardian的服务器已安装JRE,JRE版本要求为Huawei J ...

  7. 脚本命令远程访问计算机,在远程电脑上执行任意命令 (利用 Autohotkey ahk http 服务器)...

    经常会有个需求,就是在远程电脑上执行命令.如果远程电脑是windows系统的话,系统自带的工具mstsc和telnet应该可以实现这个要求,不过用起来都不是很方便. 最好的效果是,能像运行本地命令一样 ...

  8. java linux命令远程执行_java执行远程服务器上的shell命令

    所需jar包,commons-io-2.6.jar, ganymed-ssh2-262.jar import ch.ethz.ssh2.ChannelCondition; import ch.ethz ...

  9. Pssh -- 使用单个终端在多个远程Linux服务器上执行命令

    OpenSSH毫无疑问是可用于Linux的使用最广泛和强大工具之一,它允许你通过一个shell安全地连接到远程Linux系统,并且允许你与远程系统之间来回传输文件. 但OpenSSH的最大缺点是你不同 ...

最新文章

  1. 关卡设计快速入门_7. 自己来!
  2. linux的mysql修改用户密码与忘记密码的方法
  3. 《Cloudera hadoop大数据平台实战指南》此书2019年1月已上市
  4. java 设计一个动物类_Java课程设计(动物换位)
  5. 新一代高效Git协同模型AGit-Flow详解
  6. 激光器安规详细解读 - 一级 - 并以940波长为例
  7. 第5章 编写主引导扇区代码
  8. linux多环境变量使用字典,字典的用处非常大,昨天在网上找了个能在linux跑的字典程序,分享一下。...
  9. Java面试题:热情盛夏,分享Java大厂面试百题
  10. day20---IO流概述
  11. RDKit化学式 分子式搜索
  12. 深入理解Nginx~优化性能的配置项
  13. wps打开pdf乱码_wps pdf转换成word乱码
  14. access mysql并发_多用户同时使用ACCESS
  15. 送给女朋友的圣诞节电子贺卡源代码,圣诞节快乐代码
  16. 中国历史人物传记数据库 CBDB 若干表简介
  17. (2020年下半年软件设计师49题)程序设计语言的大多数语法现象可以用CFG(上下文无关文法)表示。下面的CFG产生式集用于描述简单算术表达式,其中+ - * 表示加、减、乘运算,id表示单个字母表示
  18. Windows下运行PP-Tracking_GUi
  19. android脚本 附近的人,安卓引流脚本好用吗,附近的人引流脚本的功能你知道几个?...
  20. 无线鼠标迟钝但并不是电量问题

热门文章

  1. android省市区api,使用高德地图API获取最新行政区域数据(省市区等数据json)
  2. 生成树(STP)协议及多生成树(MSTP)基本配置(H3C)
  3. win10环境下vc++6.0安装插件报unable to register........
  4. 谁说.NET没有GC调优,只改一行代码就让程序不再占用内存
  5. Android ListView中CheckBox选中状态失效的最佳解决方案
  6. Android开发示例代码
  7. Java FastJson解析json字符串 提取键值
  8. 到底什么是Cortex、ARMv8、arm架构、ARM指令集、soc?一文帮你梳理基础概念【科普】
  9. php hoa,HOA
  10. linux有不知名ip登录记录,通过登陆IP记录Linux所有用户登录所操作日志的方法