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

所需jar包,commons-io-2.6.jar, ganymed-ssh2-262.jar

import ch.ethz.ssh2.ChannelCondition;

import ch.ethz.ssh2.Connection;

import ch.ethz.ssh2.Session;

import ch.ethz.ssh2.StreamGobbler;

import java.io.BufferedReader;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.util.ArrayList;

import java.util.List;

/**

* 本机调用linux上的命令

* java 远程执行Shell命令-通过ganymed-ssh2连接

* JAVA利用SSH2登录LINUX并执行命令_运维_yezhuanxu的博客-CSDN博客

* Java 远程执行 Linux 的命令

*/

public class DemoRunShell1 {

public static void main(String[] args) {

String ip = "192.168.137.190";

String username = "root";

String password = "111111";

String runshellbinbash = "'#!/bin/bash'";

String cmd = "rm -rf /home/tony_dir/run_hadoop_wordcount_1.sh;" +

"echo "+runshellbinbash+" >> /home/tony_dir/run_hadoop_wordcount_1.sh; " +

"echo >> /home/tony_dir/run_hadoop_wordcount_1.sh; " +

"chmod 777 /home/tony_dir/run_hadoop_wordcount_1.sh; " +

"/home/tony_dir/run_hadoop_wordcount_1.sh";

String chartset = "UTF-8";

Connection connection = null;

Session session = null;

//首先构造一个连接器,传入一个需要登陆的ip地址

try {

connection = new Connection(ip);

connection.connect();//连接

boolean isAuthenticated = connection.authenticateWithPassword(username, password);

if (isAuthenticated) {

System.out.println("连接成功");

} else {

throw new Exception("连接失败");

}

session = connection.openSession();

//把命令写入脚本,在执行该脚本

// session.execCommand(cmd);

// session.execCommand("/root/tony_dir/shell_demo/demo_for.sh");

// session.execCommand("/root/tony_dir/run_test1.sh");

session.execCommand("ifconfig");

// session.execCommand("pwd");

//获得标准输出流

InputStream is = new StreamGobbler(session.getStdout());

BufferedReader brs = new BufferedReader(new InputStreamReader(is, chartset));

List result = new ArrayList();

for (String line = brs.readLine(); line != null; line = brs.readLine()) {

result.add(line);

System.out.println(line);

}

if(result.size() ==0) {

System.out.println(result);

}

session.waitForCondition(ChannelCondition.CLOSED | ChannelCondition.EOF | ChannelCondition.EXIT_STATUS, 1000 * 3600);

System.out.println("ExitCode: " + session.getExitStatus()); //得到脚本运行成功与否的标志 :0 成功,非0 失败

} catch (Exception e) {

e.printStackTrace();

} finally {

if (session != null) {

session.close();

}

if (connection != null) {

connection.close();

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值