1、需要依赖的pom文件配置:
<dependency>
<groupId>ch.ethz.ganymed</groupId>
<artifactId>ganymed-ssh2</artifactId>
<version>build209</version>
</dependency>
2、linux下远程可直接连接,windows下需要安装freeSSHd.exe;
3、安装freeSSHd.exe可以参考https://www.cnblogs.com/fuhengheng/p/8043647.html;
4、安装freeSSHd.exe不能安装有空格的地方;如果报错“the specified address is already in use” 运行services.msc停止FreeSSHDService服务;
5、java客户端连接的工作类:
package com.cn.linux.ssh;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
public class RemoteCommandUtil
{
private static final Logger log = LoggerFactory.getLogger(RemoteCommandUtil.class);
private static String DEFAULTCHART = "UTF-8";
public static Connection login(String ip, String userName, String userPwd)
{
boolean flg = false;
Connection conn = null;
try
{
conn = new Connection(ip);
conn.connect();
flg = conn.authenticateWithPassword(userName, userPwd);
if (flg)
{
log.info("=========登录成功=========" + conn);
return conn;
}
}
catch (IOException e)
{
log.error("=========登录失败=========" + e.getMessage());
e.printStackTrace();
}
return conn;
}
public static String execute(Connection conn, String cmd)
{
String result = "";
try
{
if (conn != null)
{
Session session = conn.openSession();
session.execCommand(cmd);
result = processStdout(session.getStdout(), DEFAULTCHART);
if (StringUtils.isBlank(result))
{
log.info("得到标准输出为空,链接conn:" + conn + ",执行的命令:" + cmd);
result = processStdout(session.getStderr(), DEFAULTCHART);
}
else
{
log.info("执行命令成功,链接conn:" + conn + ",执行的命令:" + cmd);
}
conn.close();
session.close();
}
}
catch (IOException e)
{
log.info("执行命令失败,链接conn:" + conn + ",执行的命令:" + cmd + " " + e.getMessage());
e.printStackTrace();
}
return result;
}
private static String processStdout(InputStream in, String charset)
{
InputStream stdout = new StreamGobbler(in);
StringBuffer buffer = new StringBuffer();
;
try
{
BufferedReader br = new BufferedReader(new InputStreamReader(stdout, charset));
String line = null;
while ((line = br.readLine()) != null)
{
buffer.append(line + "\n");
}
}
catch (UnsupportedEncodingException e)
{
log.error("解析脚本出错:" + e.getMessage());
e.printStackTrace();
}
catch (IOException e)
{
log.error("解析脚本出错:" + e.getMessage());
e.printStackTrace();
}
return buffer.toString();
}
public static void main(String[] args)
{
Connection conn = RemoteCommandUtil.login("192.168.20.240", "root", "tcrj2018");
System.out.println(RemoteCommandUtil.execute(conn, "uname -a && date && uptime && who"));
}
}
相关推荐
在Java编程中,有时我们需要实现一个功能,即通过代码远程登录Linux服务器并执行特定的Linux命令。这在自动化运维、远程脚本执行等场景中非常常见。本篇将详细讲解如何实现这一目标,并提供相关源码及jar包。 首先...
接下来,我们将编写一个简单的Java程序来演示如何使用Ganymed SSH2库实现远程登录Linux服务器并执行命令。 #### 1. 创建Connection对象 ```java // 创建Connection实例 Connection conn = new Connection(hostname...
在Java编程中,有时我们需要与操作系统进行交互,执行系统级别的命令,例如在控制台执行CMD命令或者通过SSH连接远程Linux服务器执行shell命令。这在自动化脚本、系统管理或者远程监控等场景中非常常见。本篇文章将...
Java通过ganymed-ssh2-build210.jar库实现SSH远程连接Linux终端是一个常见的应用场景,主要用于自动化运维、系统管理或者开发过程中需要与Linux服务器交互的场景。ganymed-ssh2-build210.jar是Java的一个开源SSH库,...
Java应用程序远程登录Linux并执行命令是Java开发中一个常见的需求,例如在自动化运维、云计算、DevOps等领域都需要使用远程登录和命令执行技术。下面我们将详细介绍Java应用程序远程登录Linux并执行命令的实现原理和...
在Linux系统中,SSH常用于远程登录、文件传输等操作,它使用加密技术确保通信的安全性。SSH Secure Shell客户端工具允许用户连接到远程服务器,执行命令,管理文件,甚至进行图形界面操作。 对于远程工作和协作,...
sshxcute 就是这样一个框架工具集,它基于 JSCH 构建,允许工程师利用Java 代码通过 SSH 连接远程批量执行 Linux/UNIX 系统上的命令或者脚本,同时加入了判断成功与否,取回输出等多种实用功能。sshxcute 不管是针对...
具体来说,开发者可能使用了Java的SSH(Secure Shell)库,如JSch或者Apache MINA,这些库提供了与远程Linux服务器安全连接并执行命令的能力。 SSH协议是一种在网络上传输数据的安全方式,通常用于远程登录、文件...
总之,"Java Linux SSH登录"涉及到使用Java的JSch库与Linux系统进行安全的远程通信,执行特定的命令。提供的文件列表展示了实现这一功能的可能代码结构,包括自定义的SSH连接管理类、输入输出流处理、登录选项以及...
在描述中提到的"java连接Linux系统远程调用"是指通过Java程序使用SSH2协议来连接到Linux服务器,执行命令或者管理文件系统。这种方式通常在自动化运维、脚本编程或者远程服务调用中非常有用。 下面我们将深入探讨...
本文档的标题是"Java 运用 Ganymed-SSH2 库远程连接操作 Linux 服务器",这意味着我们将使用 Java 语言来远程连接 Linux 服务器,并使用 Ganymed-SSH2 库来实现远程连接和文件传输。 描述解释 描述部分提到使用 ...
首先,要实现这个功能,我们需要借助SSH(Secure Shell)协议,它提供了安全的网络服务,允许远程登录到Linux服务器并执行命令。Java中有多个库可以支持SSH连接,例如JSch和Apache SSHD。这里我们以更常用的JSch为例...
SSHXCUTE.jar是一个Java库,它允许程序员通过SSH连接到Linux系统并执行shell命令,而无需深入了解SSH的底层细节。 SSHXCUTE.jar的核心功能包括: 1. **建立SSH连接**:通过提供主机名、用户名、密码或密钥对信息,...
ssh工具 用于连接远程服务器 linux 系统 解压 安装即可使用
Java 代码通过 SSH 连接远程批量执行 Linux/UNIX 系统上的命令或者脚本,同时加入了判断成功与否,取回输出等多种 实用功能。 文档参考 https://www.ibm.com/developerworks/cn/opensource/os-sshxcute/
Java 实现模拟 SSH 和 Telnet 登陆,以及发送与接收命令是网络编程中常见的需求,主要应用于自动化测试、远程系统管理或数据交换等场景。在本文中,我们将深入探讨如何利用 Java 实现这一功能。 首先,SSH(Secure ...
Python – paramiko 模块远程执行ssh 命令 nohup 不生效的问题解决 1、使用 paramiko 模块ssh 登陆到 linux 执行nohup命令不生效 # 执行命令 def command(ssh_config, cmd, result_print=None, nohup=False): ssh ...
本程序“登录Linux执行命令”旨在实现一个自动化流程,通过连接到AMQ(Advanced Message Queuing Protocol)消息队列,被动接收消息,并在Linux环境下执行预设的指令。这一过程涉及到的主要技术包括AMQ的交互、SSH...
java实现ssh方式连接linux(包含ganymed-ssh2-build210.jar包) ---------Java语言+绚丽的界面+仿ssh实现调用Linux的Terminal,实现远程连接linux进行命令行的操作!