使用ganymed工具调用ssh2

摘要:
所以直接粘贴代码并说出代码。

需要引入ganymed-ssh2-build210.jar包。

其实很简单。所以直接贴代码,代码说话。

package com.eshore.framework.util;



import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
import ch.ethz.ssh2.log.Logger;
/**
 * shell脚本调用类
 * @author clear
 *
 */
public class SshBasic{
    
    //连接,登陆
    public Connection login(String hostname,int port,String username,String password){

        //获取连接
        Connection conn = new Connection(hostname, port);
        try {
            //连接
            conn.connect();
            //输入账号密码登陆
            boolean isAuthenticated = conn.authenticateWithPassword(username, password);
            //登陆失败,返回错误
            if(isAuthenticated == false){
                throw new IOException("isAuthentication failed.");
            }
        } catch (IOException e) {
            
            e.printStackTrace();
        }
        
        return conn;
    }
    //获取Session
    public Session getSession(Connection conn){
        Session sess = null;
        try {
            sess = conn.openSession();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return sess;
    }
    //获取控制台打印信息
    public String printCmd(String path,Connection conn,Session sess, String date, String city){
        String txt = "";
        try {
            sess.execCommand("chmod 755 "+path+" && "+path+" "+date+" "+city);
            //打印信息
            InputStream stdout = new StreamGobbler(sess.getStdout());
            //打印错误
            InputStream stderr = new StreamGobbler(sess.getStderr());
            BufferedReader brout = new BufferedReader(new InputStreamReader(stdout,"UTF-8"));
            BufferedReader brerr = new BufferedReader(new InputStreamReader(stderr,"UTF-8"));
            while(true){
                String line = brout.readLine();
                if(line==null){
                    break;
                }
                txt += line+"<br/>";
                System.out.println(line);
            }
            while(true){
                String line = brerr.readLine();
                if(line==null){
                    break;
                }
                txt += line+"<br/>";
                System.out.println(line);
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        return txt;
    }

    public static void main(String[] args) {
        
        SshBasic m = new SshBasic();
        //连接并登陆
        Connection conn = m.login("132.122.1.51", 22, "srglweb", "srglweb123");
        //获取Session
        Session sess = m.getSession(conn);
        //获取控制台信息
        String cmd = m.printCmd("shelltest/two.sh", conn,sess,"20140905","200");
        System.out.println("cmd:"+cmd);
        System.out.println("--->"+sess);
        //判断会话是否成功
        int result = sess.getExitStatus();//如果成功返回0
        System.out.println("result:"+result);
        sess.close();
        conn.close();
    }

}

免责声明:文章转载自《使用ganymed工具调用ssh2》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MySQL varchar 最大长度,text 类型占用空间剖析deppin Linux下安装docker下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[ PyQt入门教程 ] Qt Designer工具的使用

Qt Designer是PyQt程序UI界面的实现工具,使用Qt Designer可以拖拽、点击完成GUI界面设计,并且设计完成的.ui程序可以转换成.py文件供python程序调用。本文主要通过用户登录需求描述Qt Designer工具开发界面的使用方法。 本文主要内容1、Qt Designer程序主界面窗口介绍。 2、Qt Designer程序实现界面...

Android 学习笔记之 JSON的序列化基本用法

最近在找怎样可以将一个数据对象通过WCF传给服务器,在网上看到了一个对象序列化成JSON的数据格式的帖子,这里整理下。 用到了JSON中的JSONStringer这个类,此类的主要功能就是可以快速的将一个数据类型序列化,成为一个标准的JSON数据。 其中需要注意的是: .object()和.endObject()必须同时使用,是为了按照Object标准给数值...

Go语言读取网上Json格式的天气预报数据例子

天气预报接口使用的是:http://www.weather.com.cn/data/sk/101010100.html 这里的Json数据如下:   {        "weatherinfo": {               "city": "北京",               "cityid": "101010100",             ...

JAVA 调用HTTP接口POST或GET实现方式(转)

HTTP是一个客户端和服务器端请求和应答的标准(TCP),客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。 具体POST或GET实现代码如下: packagecom.yoodb.util; importjava.io.ByteArrayOutputStre...

SQLAlchemy+Flask-RESTful使用(四)

前言 顺利出到4啦,其实学习过程中发现了不少错误,不过有些实在是没啥代表性. 最近买了两本小程序和安卓方面的书,其实从初中开始,想搞编程的目的就是写些安卓软件. 现在看来不太可能了.拿来当当兴趣爱好还是没问题的 这几天不是没更新,是在前面的章节里增加/勘误 变更记录 # 19.4.15  起笔 # 19.4.15  增加 Flask-RESTful 获取u...

Java多次启动相同jar程序

背景现在很多软件都支持集群部署,但是测试环境通常资源有限,所以一般通过单台机器模拟集群部署(使用不同端口,运行相同jar包),本文的目的就是通过多种方式实现此需求。 两个程序1、jar程序   ① springboot程序   ② 只包含一个main方法,用于启动程序,输出进程ID   ③ 路径:C:/demo.jar(windows) /demo.jar...