编写java 程序与Linux进行远程连接并运行linux下的脚本

Posted braveym

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写java 程序与Linux进行远程连接并运行linux下的脚本相关的知识,希望对你有一定的参考价值。

我这里是通过连接到centos6.5的大数据集群的主节点,并通过运行hadoop的启动脚本来启动hadoop

本人采用的是SSH的方式连接

通过创建maven项目来编写代码,在编写代码之前需要先导入架包

在pom.xml文件里添加以下语句

 <dependency>
            <groupId>ch.ethz.ganymed</groupId>
            <artifactId>ganymed-ssh2</artifactId>
            <version>262</version>
        </dependency>

 

 

技术图片

 

 编写连接代码:

package Studytest.com.jsion;

import java.io.IOException;

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;

/*
  @author: Liu Yuanyuan
  purpose: test connecting remote computer and execute linux command
*/

public class TestRemoteConnect {

    public static void main(String[] args) {

        String hostname = "192.168.114.11";
        String username = "hadoop";
        String password = "666666";
        //指明连接主机的IP地址
        Connection conn = new Connection(hostname);
        Session ssh = null;
        try {
            //连接到主机
            conn.connect();
            //使用用户名和密码校验
            boolean isconn = conn.authenticateWithPassword(username, password);
            if (!isconn)
            {
                System.out.println("用户名称或者是密码不正确");
            }
            else
            {
                System.out.println("已经连接OK");
                ssh = conn.openSession();

                ssh.execCommand("sh /opt/modules/hadoop-2.6.0/sbin/start-all.sh");
                //ssh.execCommand("perl /root/hello.pl");
                //只允许使用一行命令,即ssh对象只能使用一次execCommand这个方法,
                //多次使用则会出现异常
                //使用多个命令用分号隔开
                //ssh.execCommand("cd /root; sh hello.sh");

                //将Terminal屏幕上的文字全部打印出来
                InputStream is = new StreamGobbler(ssh.getStdout());
                BufferedReader brs = new BufferedReader(new InputStreamReader(is));
                while (true)
                {
                    String line = brs.readLine();
                    if (line == null)
                    {
                        break;
                    }
                    System.out.println(line);
                }
            }

        } catch (IOException e)
        {
            e.printStackTrace();
        } finally
        {
            //连接的Session和Connection对象都需要关闭
            ssh.close();
            conn.close();
        }

    }

}

 

 

运行一下代码

技术图片

 

检测集群的启动进程:

 技术图片

 

 可以看到运行成功!!!

 

以上是关于编写java 程序与Linux进行远程连接并运行linux下的脚本的主要内容,如果未能解决你的问题,请参考以下文章

远程连接协议简介

Linux远程开发

安装Linux教程和使用putty进行远程连接

如何用xmanager启动Linux上的图形界面程序

如何在 Windows 中编写 Java 代码并在 Linux 中编译和运行

GUN/Linux是啥意思