# 本地调用
使用JDK自带的RunTime类和Process类实现

public static void main(String[] args){
Process proc = RunTime.getRunTime().exec("cd /home/winnie; ls;") // 标准输入流(必须写在 waitFor 之前)
String inStr = consumeInputStream(proc.getInputStream());
// 标准错误流(必须写在 waitFor 之前)
String errStr = consumeInputStream(proc.getErrorStream()); int retCode = proc.waitFor();
if(retCode == 0){
System.out.println("程序正常执行结束");
}
} /**
* 消费inputstream,并返回
*/
public static String consumeInputStream(InputStream is){
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String s ;
StringBuilder sb = new StringBuilder();
while((s=br.readLine())!=null){
System.out.println(s);
sb.append(s);
}
return sb.toString();
}

# 远程调用(一)
导入ganymed-ssh2包

import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session; public static void main(String[] args){
String host = "210.38.162.181";
int port = 22;
String username = "root";
String password = "root";
// 创建连接
Connection conn = new Connection(host, port);
// 启动连接
conn.connection();
// 验证用户密码
conn.authenticateWithPassword(username, password);
Session session = conn.openSession();
session.execCommand("cd /home/winnie; ls;"); // 消费所有输入流
String inStr = consumeInputStream(session.getStdout());
String errStr = consumeInputStream(session.getStderr()); session.close;
conn.close();
} /**
* 消费inputstream,并返回
*/
public static String consumeInputStream(InputStream is){
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String s ;
StringBuilder sb = new StringBuilder();
while((s=br.readLine())!=null){
System.out.println(s);
sb.append(s);
}
return sb.toString();
}

# 远程调用(二)
使用jsch实现

import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session; public static void main(String[] args){
String host = "210.38.162.181";
int port = 22;
String username = "root";
String password = "root";
// 创建JSch
JSch jSch = new JSch();
// 获取session
Session session = jSch.getSession(username, host, port);
session.setPassword(password);
Properties prop = new Properties();
prop.put("StrictHostKeyChecking", "no");
session.setProperties(prop);
// 启动连接
session.connect();
ChannelExec exec = (ChannelExec)session.openChannel("exec");
exec.setCommand("cd /home/winnie; ls;");
exec.setInputStream(null);
exec.setErrStream(System.err);
exec.connect(); // 消费所有输入流,必须在exec之后
String inStr = consumeInputStream(exec.getInputStream());
String errStr = consumeInputStream(exec.getErrStream()); exec.disconnect();
session.disconnect();
} /**
* 消费inputstream,并返回
*/
public static String consumeInputStream(InputStream is){
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String s ;
StringBuilder sb = new StringBuilder();
while((s=br.readLine())!=null){
System.out.println(s);
sb.append(s);
}
return sb.toString();
}

java连接linux的三种方式(附执行命令)的更多相关文章

  1. PHP的学习--连接MySQL的三种方式

    记录一下PHP连接MySQL的三种方式. 先mock一下数据,可以执行一下sql. /*创建数据库*/ CREATE DATABASE IF NOT EXISTS `test`; /*选择数据库*/ ...

  2. JDBC 创建连接对象的三种方式 、 properties文件的建立、编辑和信息获取

    创建连接对象的三种方式 //第一种方式 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ ...

  3. java 获取时间戳的三种方式

      java 获取时间戳的三种方式 CreationTime--2018年7月13日16点29分 Author:Marydon 1.实现方式 方式一:推荐使用 System.currentTimeMi ...

  4. 如何实现有返回值的多线程 JAVA多线程实现的三种方式

    可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口.执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable ...

  5. Java实现线程的三种方式和区别

    Java实现线程的三种方式和区别 Java实现线程的三种方式: 继承Thread 实现Runnable接口 实现Callable接口 区别: 第一种方式继承Thread就不能继承其他类了,后面两种可以 ...

  6. JDBC 创建连接对象的三种方式 、 properties文件的建立、编辑和信息获取

    创建连接对象的三种方式 //第一种方式 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ ...

  7. [OpenSource]浅谈.Net和Java互相调用的三种方式

    在很多的大型系统开发中,开发工具往往不限制于同一种开发语言,而是会使用多种开发语言的混合型开发.目前Java和.Net都声称自己占85%的市场份额,不管谁对谁错,Java和.Net是目前应用开发的两个 ...

  8. 浅谈.Net和Java互相调用的三种方式

    在很多的大型系统开发中,开发工具往往不限制于同一种开发语言,而是会使用多种开发语言的混合型开发.目前Java和.Net都声称自己占85%的市场份 额,不管谁对谁错,Java和.Net是目前应用开发的两 ...

  9. Java并发编程:Java创建线程的三种方式

    目录 引言 创建线程的三种方式 一.继承Thread类 二.实现Runnable接口 三.使用Callable和Future创建线程 三种方式的对比 引言 在日常开发工作中,多线程开发可以说是必备技能 ...

随机推荐

  1. jQuery extend方法详解

    先说个概念的东西: jQuery为开发插件提拱了两个方法,分别是: $.fn.extend(item):为每一个实例添加一个实例方法item.($("#btn1") 会生成一个 j ...

  2. 第10章 布局样式相关-伸缩布局(Flexible Box)

    伸缩布局(一) CSS3引入了一种新的布局模式--Flexbox布局,即伸缩布局盒模型(Flexible Box),用来提供一个更加有效的方式制定.调整和分布一个容器里项目布局,即使它们的大小是未知或 ...

  3. JavaEE之servlet相关技术

    相关技术:为了灵活实现的不同路径(/hello)执行不同的资源( HeIIoMyServlet)我们需要使用XML进行配置;为了限定XML内容,我们需要使用xml约束(DTD或schema);为了获得 ...

  4. html中块级元素和行内元素

    块级元素和行内元素的三个区别 1.行内元素与块级元素直观上的区别: 行内元素会在一条直线上排列,都是同一行,水平方向排列 块级元素独占一行,垂直方向排列.块级元素从新行开始结束接着一个断行 2.块级元 ...

  5. 完整SQL分页存储过程(支持多表联接)

    http://www.cnblogs.com/andiki/archive/2009/03/24/1420289.html Code/********************************* ...

  6. 安装、配置Jupyter Notebook快速入门教程

    What? Why? How? ---安装 ---启动 ---关闭 ---保存 Markdown语法 Magic关键词 转换notebook--toHTML 创建幻灯片 运行代码 What? 文字化编 ...

  7. as3.2版本中中jar生成方法

    lintOptions { abortOnError false } task makeJar(type: Copy) { //删除存在的 delete 'build/libs/myjar.jar' ...

  8. CSS布局之传统方法

    传统的页面布局依赖于盒模型+流动模型(flow)+浮动模型(float)+层模型(layer)来实现页面的布局,具体方法是通过盒模型+display属性+float属性+position属性来加以实现 ...

  9. mongodb远程连接

    1.关闭防火墙 firewall-cmd    --state 查看防火墙是否运行中 systemctl  stop   firewalld.service 关闭防火墙服务 2.使用bind_ip指定 ...

  10. ping外网

    /** * @author suncat * @category 判断是否有外网连接(普通方法不能判断外网的网络是否连接,比如连接上局域网) * @return */ public static fi ...