使用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();
    }

}
时间: 2024-08-11 03:32:54

使用ganymed工具调用ssh2的相关文章

毕业设计总结:(2)GP工具调用

感谢论坛博主@Mr|Right的文章以及他对我的帮助. 在上一篇文章中已经完成了GP工具的发布,这篇文章中主要涉及到GP工具的调用. 废话不多说,直接开始. 系统开发的硬件配置: 操作系统:Windows 8.1 专业版 软件平台:ArcGIS 10.1(包括Server 10.1和Desktop 10.1) ArcGIS API 3.1 for Silverlight Visual Studio 2010 Microsoft Silverlight 5 SDK Microsoft Access

C#开发COM组件供其他开发环境或工具调用介绍(转)

由于工作原因涉及到这一块的开发,由于之前并未接触过,所以本篇文章也是在参考了各种资料后,自己实现并通过通过测试之后所整理的备忘录以及一些个人观点. 希望对刚接触这类型开发的朋友有所帮助,若有不足之处还望不吝赐教. 废话不多说,下面就是教学式内容了,第一次写,没有文采勿见怪. 开发环境: .Net Framework 4.0 开发工具: Microsoft Visual Studio 2010 测试环境: Windows XP..Net Framework 4.0 测试工具: Delphi7.Po

Ganymed SSH-2 java执行远程linux机器命令工具

Ganymed SSH2 for Java is a library which implements the SSH-2 protocol in pure Java(tested on J2SE 1.4.2 and 5.0). It allows one to connect to SSH servers from withinJava programs. It supports SSH sessions (remote command execution and shell access),

Ganymed SSH-2

我们在日常开发中,有时候会遇到触发一个linux命令,比如清理临时文件,或者触发一个shell命令.那么这个时候就需要通过java去调用shell命令. 这里我们使用java自带的ProcessBuilder 来完成任务.ProcessBuilder类是用于创建操作系统进程.通过本机远程ssh到另外一台机器上去执行shell命令的需求,这种使用方式经常用于一台机器集群管理其他机器的需求. java里可以通过Ganymed SSH-2, Expect4j等实现ssh登录,基步骤如下: 一.下载安装

c# 调用ArcEngine的GP工具

转自原文c# 调用ArcEngine的GP工具,AE调用GP工具 IAoInitialize m_AoInitialize = new AoInitializeClass(); esriLicenseStatuslicenseStatus = esriLicenseStatus.esriLicenseUnavailable; licenseStatus = m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCod

Ganymed SSH2 模拟类似FileZilla远程传输文件(基于SCP协议)

Ganymed SSH2 模拟类似FileZilla远程传输文件(基于SCP协议) 为了传输文件或者目录,我们使用 Ganymed SSH2中的SCPClient类,这个类实现了scp命令功能. 下面的代码包含了传输单个文件和传输目录的功能: package com.doctor.ganymed_ssh2; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io

【原】Java程序调用远程Shell脚本

此程序的目的是执行远程机器上的Shell脚本. [环境参数]远程机器IP:192.168.234.123用户名:root密码:rootShell脚本的路径:/home/IFileGenTool /BakProvisionAndOccurEntrance.sh [具体步骤]1.在远程机器上,准备Shell脚本.[[email protected] IFileGenTool]# vim ./load_data.sh 1 #!/bin/sh 2 source /etc/profile 3 dbName

ArcMap自定义脚本工具制作

原文 ArcMap自定义脚本工具制作 在制图的前期,一般需要做一些数据的整理,如图层合并.裁剪等工作.虽然在ArcMap中也有提供对应的工具,但使用起来需要点技巧.如批量裁剪,虽然可以实现,但出来的结果会重命名为[图层名]_clip,这样对于配置好整个区域的mxd,需要单独裁剪部分范围数据非常不友好,以为后续工作意味着需要单独给裁剪出来的数据重命名,删除掉后缀_clip才可以统一设置数据源. 解决这个问题其实可以很快速的编写python脚本去实现.但脚本对于一般人来说比较麻烦,每次使用都需要调整

构建工具的发展及Android Gradle快速上手

前话: 最近谷歌宣布官方不再维护Eclipse ADT了,之后将更加专注于Android Studio的功能和性能上的改进,早在2013年的Google IO大会上首次推出了Android Studio,当时刚出来的时候我就好奇的去下载体验了一下,想看一下新开发工具的优势在哪里,据官方介绍,最吸引我的一点就是使用Studio使用了Gradle编译系统,可以支持很灵活的定制需求,而我当时正在研究当成库使用的APK(就是现在的aar文件,不过当时还没有出身),刚好遇到了ADT编译系统的限制,所以当时