`

java SSH访问linux服务器 并执行命令

    博客分类:
  • java
 
阅读更多
1 .引入com.jcraft.jsch  jar

2.java代码  sshCommandUtil.java


import com.jcraft.jsch.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Vector;

public class SSHCommandUtil {
    private String ipAddress;
    private String username;
    private String password;
    public static final int DEFAULT_SSH_PORT = 22;
    private Vector<String> stdout;



    public SSHCommandUtil(final String ipAddress, final String username, final String password) {
        this.ipAddress = ipAddress;
        this.username = username;
        this.password = password;
        stdout = new Vector<String>();
    }

    public int execute(final String command) {
        int returnCode = 0;
        JSch jsch = new JSch();
        MyUserInfo userInfo = new MyUserInfo();

        try {
            // Create and connect session.
            Session session = jsch.getSession(username, ipAddress, DEFAULT_SSH_PORT);
            session.setPassword(password);
            session.setUserInfo(userInfo);
            session.connect();

            // Create and connect channel.
            Channel channel = session.openChannel("exec");
            ((ChannelExec) channel).setCommand(command);

            channel.setInputStream(null);
            BufferedReader input = new BufferedReader(new InputStreamReader(channel
                    .getInputStream()));

            channel.connect();
            System.out.println("The remote command is: " + command);

            // Get the output of remote command.
            String line;
            while ((line = input.readLine()) != null) {
                stdout.add(line);
            }
            input.close();

            // Get the return code only after the channel is closed.
            if (channel.isClosed()) {
                returnCode = channel.getExitStatus();
            }

            // Disconnect the channel and session.
            channel.disconnect();
            session.disconnect();
        } catch (JSchException e) {
            System.out.println("链接不到服务器,请确认服务器状态");
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return returnCode;
    }

    public Vector<String> getStandardOutput() {
        return stdout;
    }

  
    }

    /**
     * 根据服务ip,用户名,密码登录服务器并执行shell命令查看其内存和硬盘使用情况
     * @param ip
     * @param username
     * @param pwd
     * @return
     */
    public  static Vector<String>  getMemAndDisk(String ip,String username,String pwd){
        SSHCommandUtil sshCommandUtil = new SSHCommandUtil(ip, username, pwd);
        sshCommandUtil.execute("free -g| sed -n '2p;2q'");//获取内存信息
        sshCommandUtil.execute("df -h| sed -n '3p;3q'");//获取硬盘信息
        Vector<String> stdout = sshCommandUtil.getStandardOutput();
        return stdout;
    }
}


3.java 代码 MyUserInfo.java

import com.jcraft.jsch.UserInfo;

/**
* Created by lill on 2015/11/12.
*/
public class MyUserInfo implements UserInfo {
        private String password;

        private String passphrase;

        @Override
        public String getPassphrase() {
            System.out.println("MyUserInfo.getPassphrase()");
            return null;
        }

        @Override
        public String getPassword() {
            System.out.println("MyUserInfo.getPassword()");
            return null;
        }

        @Override
        public boolean promptPassphrase(final String arg0) {
            System.out.println("MyUserInfo.promptPassphrase()");
            System.out.println(arg0);
            return false;
        }

        @Override
        public boolean promptPassword(final String arg0) {
            System.out.println("MyUserInfo.promptPassword()");
            System.out.println(arg0);
            return false;
        }

        @Override
        public boolean promptYesNo(final String arg0) {
            System.out.println("MyUserInfo.promptYesNo()");
            System.out.println(arg0);
            if (arg0.contains("The authenticity of host")) {
                return true;
            }
            return false;
        }

        @Override
        public void showMessage(final String arg0) {
            System.out.println("MyUserInfo.showMessage()");
        }
    }



4.java 测试方法
/**
     * 测试方法
     * @param args
     */
    public static void main(final String [] args) {
        SSHCommandUtil sshCommandUtil = new SSHCommandUtil(ip, username,password);
        sshCommandUtil.execute("free -g| sed -n '2p;2q'");//获取内存信息
        sshCommandUtil.execute("df -h| sed -n '3p;3q'");//获取硬盘信息
        Vector<String> stdout=sshCommandUtil.getStandardOutput();
        int  i=0;
        for (String str : stdout) {
            if(i==0){
                //memList= RegexOroUtil.getAllResult(str, "[0-9]\\d*\\.?\\d*");//java正则形式拆分
                String tt[] = str.split("\\s{1,}");//按照空格分割字符串,多个空格作为一个空格对字符串进行分割 split形式
                System.out.print(tt);
            }else {

               // diskList = RegexOroUtil.getAllResult(str, "[0-9]\\d*\\.?\\d*");//java正则形式拆分
                String tt1[] = str.split("\\s{1,}");//按照空格分割字符串,多个空格作为一个空格对字符串进行分割 split形式
                System.out.print(tt1);
            }
            i++;
        }
分享到:
评论

相关推荐

    java通过代码登录远程linux服务器并执行linux命令源码以及jar包

    在Java编程中,有时我们需要实现一个功能,即通过代码远程登录Linux服务器并执行特定的Linux命令。这在自动化运维、远程脚本执行等场景中非常常见。本篇将详细讲解如何实现这一目标,并提供相关源码及jar包。 首先...

    java执行远程linux服务器命令

    首先,要实现这个功能,我们需要借助SSH(Secure Shell)协议,它提供了安全的网络服务,允许远程登录到Linux服务器并执行命令。Java中有多个库可以支持SSH连接,例如JSch和Apache SSHD。这里我们以更常用的JSch为例...

    java控制台输入cmd命令, ssh远程linux shell命令, 并打印命令输出到控制台

    在Java编程中,有时我们需要与操作系统进行交互,执行系统级别的命令,例如在控制台执行CMD命令或者通过SSH连接远程Linux服务器执行shell命令。这在自动化脚本、系统管理或者远程监控等场景中非常常见。本篇文章将...

    java上传文件到linux服务器,操作linux服务器上文件,下载linux服务器文件,删除linux服务器文件

    Linux服务器是一种基于Linux操作系统并提供网络服务的计算机系统,而Java作为一种跨平台的编程语言,能够通过SSH(Secure Shell)协议与Linux服务器进行通信。SSH是一种安全的网络协议,用于在网络中传输命令和数据...

    java连接linux,执行shell命令的工具类 sshxcute.jar

    在Java开发中,有时我们需要远程连接到Linux服务器执行shell命令,比如进行系统管理、自动化运维或者数据处理等任务。在这种情况下,使用SSH(Secure Shell)协议是常见的解决方案,因为它提供了安全的网络通信。...

    Java远程连接Linux服务器并执行命令及上传文件功能

    随着技术的进步,Java开发者在项目实施过程中,经常需要远程连接Linux服务器来执行命令或上传文件。本文将重点介绍如何利用Java实现这一功能,并涉及相关技术的深入解析。 首先,要实现Java远程连接Linux服务器并...

    ganymed-ssh2-build210.jar java远程访问linux服务器操作、上传下载文件

    java远程访问linux服务器操作 远程执行shll脚本或者命令、上传下载文件 package com.szkingdom.kfit.bank.ccbDirectShortcut.helper; import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.SCPClient; import ...

    java应用程序远程登录linux并执行其命令

    接下来,我们将编写一个简单的Java程序来演示如何使用Ganymed SSH2库实现远程登录Linux服务器并执行命令。 #### 1. 创建Connection对象 ```java // 创建Connection实例 Connection conn = new Connection(hostname...

    Java运用ganymed-ssh2-build210.jar包远程连接操作linux服务器

    本文档的标题是"Java 运用 Ganymed-SSH2 库远程连接操作 Linux 服务器",这意味着我们将使用 Java 语言来远程连接 Linux 服务器,并使用 Ganymed-SSH2 库来实现远程连接和文件传输。 描述解释 描述部分提到使用 ...

    java测试Linux服务器内存使用、回收情况

    通过简单的java程序测试Linux服务器内存使用、回收情况,排查Linux服务器内存使用异常的情况

    linux java web SSH 工具 远程

    总的来说,"linux java web SSH 工具 远程"这个主题涵盖了服务器管理、Web应用开发和远程协作的关键技术。理解并熟练掌握这些技能,对于IT专业人员来说至关重要,无论是开发、运维还是系统管理,都能大大提高工作...

    java实现模拟SSH和telnet登陆(实现命令的发送和接受)

    JSch 是一个纯 Java 实现的 SSH2 客户端,可以用来连接到 SSH 服务器,进行文件传输、命令执行等操作。下面是一个简单的 SSH 连接示例: ```java import com.jcraft.jsch.*; public class SSHConnection { public...

    Java(通过ganymed-ssh2-build210.jar)实现SSH远程连接linux终端

    总之,Java结合ganymed-ssh2-build210.jar库可以实现强大的SSH远程连接功能,使开发者能够在Java应用中安全、便捷地与Linux服务器交互,执行各种远程操作。无论是简单的命令执行还是复杂的自动化脚本,这个库都能...

    java ssh 安全访问代码

    根据提供的文件信息,我们可以归纳出以下相关知识点: ### 1. Java SSH 安全访问代码概览 #### 标题解读: - **Java SSH 安全访问代码*...通过这种方式,可以安全地与远程服务器进行交互,执行各种命令并获取其结果。

    ssh2.jar java linux

    在描述中提到的"java连接Linux系统远程调用"是指通过Java程序使用SSH2协议来连接到Linux服务器,执行命令或者管理文件系统。这种方式通常在自动化运维、脚本编程或者远程服务调用中非常有用。 下面我们将深入探讨...

    java_连接_linux_执行命令_linux.zip

    JSch是一个纯Java实现的SSH2客户端,它允许Java程序通过SSH连接到远程的Linux服务器,并执行相关的操作。具体步骤如下: 1. 引入JSch库到Java项目中,这可以通过添加Maven依赖或者直接将jar包导入项目中。 2. 创建...

    Java应用程序远程登录linux并执行其命令.pdf

    在Java应用程序中,我们可以使用Ganymed SSH-2库来连接Linux服务器,执行命令并获取结果。Ganymed SSH-2库提供了完整的SSH协议实现,包括连接、认证、会话管理、命令执行等功能。 _Java应用程序远程登录Linux的实现...

    Linux服务器批处理远程命令执行工具

    Linux服务器批处理远程命令执行工具。纯java实现的ssh协议(jsch),支持同时连接多台linux主机,执行相同的命令。只需配置目标主机的ip地址、用户名和密码即可实现远程操作。服务器无需配置ssh对等协议或安装任何...

    java调用shell命令实现实例

    基于sshConnect的linux服务器的shell命令调用,并获取命令返回结果的实例。亲测有效!

    JAVA操作linux服务器,本文用于启动shell脚本并返回数据,简单易懂,可随时修改

    总之,通过Java操作Linux服务器并执行shell脚本,可以实现自动化运维、远程数据获取等多种功能。结合Apache Commons库,我们可以编写出高效、可靠的远程管理工具。在实际开发中,一定要注意安全性,例如使用密钥对...

Global site tag (gtag.js) - Google Analytics