zoukankan      html  css  js  c++  java
  • 编写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();
            }
    
        }
    
    }

    运行一下代码

    检测集群的启动进程:

     

     可以看到运行成功!!!

  • 相关阅读:
    UPD通信
    异常处理
    网络编程-套接字(socket)
    数据分析(一)
    爬虫存储库之mongodb数据库(四)
    爬虫请求库selenium(三)
    爬虫解析库beautifulsoup(二)
    爬虫简介与request库(一)
    flask框架数据库之SQLAlchemy
    flask框架(四)
  • 原文地址:https://www.cnblogs.com/braveym/p/10836055.html
Copyright © 2011-2022 走看看