参考:http://blog.csdn.net/xiao_jun_0820/article/details/26254813

   http://blog.csdn.net/a19881029/article/details/20000775

API:http://www.boyunjian.com/javadoc/org.jvnet.hudson/ganymed-ssh2/build210-hudson-1/_/ch/ethz/ssh2/Session.html#execCommand(java.lang.String)

  1. package shell;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.nio.charset.Charset;
  6.  
  7. import ch.ethz.ssh2.Connection;
  8. import ch.ethz.ssh2.Session;
  9.  
  10. public class RemoteShellTool {
  11.  
  12. private Connection conn;
  13. private String ipAddr;
  14. private String charset = Charset.defaultCharset().toString();
  15. private String userName;
  16. private String password;
  17.  
  18. public RemoteShellTool(String ipAddr, String userName, String password, String charset) {
  19. this.ipAddr = ipAddr;
  20. this.userName = userName;
  21. this.password = password;
  22. if (charset != null) {
  23. this.charset = charset;
  24. }
  25. }
  26.  
  27. public boolean login() throws IOException {
  28. conn = new Connection(ipAddr);
  29. conn.connect(); // 连接
  30. return conn.authenticateWithPassword(userName, password); // 认证
  31. }
  32.  
  33. public String exec(String cmds) {
  34. InputStream in = null;
  35. String result = "";
  36. try {
  37. if (this.login()) {
  38. Session session = conn.openSession(); // 打开一个会话
  39. session.execCommand(cmds);
  40.  
  41. in = session.getStdout();
  42. result = this.processStdout(in, this.charset);
  43. session.close();
  44. conn.close();
  45. }
  46. } catch (IOException e1) {
  47. e1.printStackTrace();
  48. }
  49. return result;
  50. }
  51.  
  52. public String processStdout(InputStream in, String charset) {
  53.  
  54. byte[] buf = new byte[1024];
  55. StringBuffer sb = new StringBuffer();
  56. try {
  57. while (in.read(buf) != -1) {
  58. sb.append(new String(buf, charset));
  59. }
  60. } catch (IOException e) {
  61. e.printStackTrace();
  62. }
  63. return sb.toString();
  64. }
  65.  
  66. /**
  67. * @param args
  68. */
  69. public static void main(String[] args) {
  70.  
  71. RemoteShellTool tool = new RemoteShellTool("192.168.134.128", "root", "root", "utf-8");
  72.  
  73. // String result = tool.exec("./test.sh xiaojun");
  74. String result = tool.exec("cd /home;./t.sh");
  75. System.out.println(result);
  76.  
  77. }
  78.  
  79. }

Java远程调用Linux脚本的更多相关文章

  1. java远程调用linux的命令或者脚本

    转载自:http://eksliang.iteye.com/blog/2105862 Java通过SSH2协议执行远程Shell脚本(ganymed-ssh2-build210.jar) 使用步骤如下 ...

  2. JAVA远程执行Shell脚本类

    1.java远程执行shell脚本类 package com.test.common.utility; import java.io.IOException; import java.io.Input ...

  3. 使用Runtime.getRuntime().exec()在java中调用python脚本

    举例有一个Python脚本叫test.py,现在想要在Java里调用这个脚本.假定这个test.py里面使用了拓展的包,使得pythoninterpreter之类内嵌的编译器无法使用,那么只能采用ja ...

  4. Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件

    本文通过Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件,代码如下: import java.io.File; import java.io.IOException; import ...

  5. Java实践-远程调用Shell脚本并获取输出信息

    1.添加依赖 <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-s ...

  6. Shell 脚本 —— java 代码远程调用shell脚本重启 tomcat

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.创建maven 工程 ​ maven 依赖: <dependency> <grou ...

  7. 用java代码调用shell脚本执行sqoop将hive表中数据导出到mysql

    1:创建shell脚本 touch sqoop_options.sh chmod 777 sqoop_options.sh 编辑文件  特地将执行map的个数设置为变量  测试 可以java代码传参数 ...

  8. linux下的shell命令的编写,以及java怎样调用linux的shell命令(java怎样获取linux上的网卡的ip信息)

    程序猿都非常懒,你懂的! 近期在开发中,须要用到server的ip和mac信息.可是server是架设在linux系统上的,对于多网口,在获取ip时就产生了非常大的问题.以下是在windows系统上, ...

  9. java中调用js脚本

    JDK1.6加入了对Script(JSR223)的支持.这是一个脚本框架,提供了让脚本语言来访问Java内部的方法.你可以在运行的时候找到脚本引擎,然后调用这个引擎去执行脚本.这个脚本API允许你为脚 ...

随机推荐

  1. Python MongoDB 创建数据库

    章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python M ...

  2. c\c++ 中字符串分割,并且转换为整形数据

    在项目开发中,经常使用到字符串分割, 并且将其转换为整形(比如IP的分割获取,MAC地址的分割获取等),代码如下: #ifndef _UNICODE void StrToIntData( char * ...

  3. 2020PHP面试-PHP篇

    一.列举一些PHP的设计模式 单例模式:保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个,同时这个类还必须提供一个访问该类的全局访问点. 工厂模式:定义一个创建对象的接口,但是让 ...

  4. CodeForces - 748B Santa Claus and Keyboard Check

    题意:给定两个字符串a和b,问有多少种不同的字母组合对,使得将这些字母对替换字符串b后,可以变成字符串a.注意字母对彼此各不相同. 分析:vis[u]记录与u可形成关系的字母,若u与v不同,则形成字母 ...

  5. you-get使用

    1.pip install you-get 2.如果出错  查看错误bug    you-get http://www.iqiyi.com/v_19rrnqxz7k.html#vfrm=2-4-0-1 ...

  6. C语言的字符串类型

    C语言使用指针来管理字符串(1)C语言中定义字符串的方法:char *p = "linux";此时p就叫字符串,但是实际上p只是一个字符指针(本质上就是一个指针变量,只是p指向了一 ...

  7. jdk 的安装教程

    1. 配置的位置 鼠标右击计算机----属性-----高级系统设置---环境变量----在系统变量中配置(推荐) 2.增加环境变量 (1)新建 -----  变量名:   JAVA_HOME 变量值 ...

  8. 18 12 25 css 基本语法以及页面使用

    css的定义方法是: 选择器 { 属性:值; 属性:值; 属性:值;} 选择器是将样式和页面元素关联起来的名称,属性是希望设置的样式属性每个属性有一个或多个值 css页面引入方法: 1.外联式:通过l ...

  9. js数组,字符转换;key_value获取

    js 数组转字符串js 字符串转数组arr.join(",");String.split(","); 对象的所有keys Object.keys(val)对象的 ...

  10. ES6 之 数组的扩展

    ES5 检测数组 let arr = [1,2,3,4] Array.isArray(arr) arr instanceof Array 转换方法 arr.toLocaleString() arr.t ...