- 浏览: 60195 次
-
文章分类
最新评论
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++;
}
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 通过url获取文章内容
2015-12-07 12:00 01 测试方法 public TipMessage.Resu ... -
java double四舍五入两位小数
2015-05-06 16:09 687public static void main(String ... -
java 日志页面展示 抓取远程的文件
2015-03-18 15:53 880/** * 抓取远程的文件 * * @param u ... -
uploadify 上传文件
2014-10-16 10:51 650js: <script type="tex ... -
uploadify 谷歌刷新崩溃
2014-10-16 10:45 646由于谷歌浏览器缓存,引入js文件带个动态参数这里为时间 ... -
按对象(class)的某个字段将list 排序
2014-06-16 18:08 478声明: 排序类:HttpSendAndRev ... -
java日期处理
2014-04-30 13:51 352Calendar c = Calendar.getInst ... -
java clalendar日历 计算几个月后的日期
2013-09-09 18:59 951Calendar calendar=Calendar. ...
相关推荐
在Java编程中,有时我们需要实现一个功能,即通过代码远程登录Linux服务器并执行特定的Linux命令。这在自动化运维、远程脚本执行等场景中非常常见。本篇将详细讲解如何实现这一目标,并提供相关源码及jar包。 首先...
首先,要实现这个功能,我们需要借助SSH(Secure Shell)协议,它提供了安全的网络服务,允许远程登录到Linux服务器并执行命令。Java中有多个库可以支持SSH连接,例如JSch和Apache SSHD。这里我们以更常用的JSch为例...
在Java编程中,有时我们需要与操作系统进行交互,执行系统级别的命令,例如在控制台执行CMD命令或者通过SSH连接远程Linux服务器执行shell命令。这在自动化脚本、系统管理或者远程监控等场景中非常常见。本篇文章将...
Linux服务器是一种基于Linux操作系统并提供网络服务的计算机系统,而Java作为一种跨平台的编程语言,能够通过SSH(Secure Shell)协议与Linux服务器进行通信。SSH是一种安全的网络协议,用于在网络中传输命令和数据...
在Java开发中,有时我们需要远程连接到Linux服务器执行shell命令,比如进行系统管理、自动化运维或者数据处理等任务。在这种情况下,使用SSH(Secure Shell)协议是常见的解决方案,因为它提供了安全的网络通信。...
随着技术的进步,Java开发者在项目实施过程中,经常需要远程连接Linux服务器来执行命令或上传文件。本文将重点介绍如何利用Java实现这一功能,并涉及相关技术的深入解析。 首先,要实现Java远程连接Linux服务器并...
java远程访问linux服务器操作 远程执行shll脚本或者命令、上传下载文件 package com.szkingdom.kfit.bank.ccbDirectShortcut.helper; import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.SCPClient; import ...
接下来,我们将编写一个简单的Java程序来演示如何使用Ganymed SSH2库实现远程登录Linux服务器并执行命令。 #### 1. 创建Connection对象 ```java // 创建Connection实例 Connection conn = new Connection(hostname...
本文档的标题是"Java 运用 Ganymed-SSH2 库远程连接操作 Linux 服务器",这意味着我们将使用 Java 语言来远程连接 Linux 服务器,并使用 Ganymed-SSH2 库来实现远程连接和文件传输。 描述解释 描述部分提到使用 ...
通过简单的java程序测试Linux服务器内存使用、回收情况,排查Linux服务器内存使用异常的情况
总的来说,"linux java web SSH 工具 远程"这个主题涵盖了服务器管理、Web应用开发和远程协作的关键技术。理解并熟练掌握这些技能,对于IT专业人员来说至关重要,无论是开发、运维还是系统管理,都能大大提高工作...
JSch 是一个纯 Java 实现的 SSH2 客户端,可以用来连接到 SSH 服务器,进行文件传输、命令执行等操作。下面是一个简单的 SSH 连接示例: ```java import com.jcraft.jsch.*; public class SSHConnection { public...
总之,Java结合ganymed-ssh2-build210.jar库可以实现强大的SSH远程连接功能,使开发者能够在Java应用中安全、便捷地与Linux服务器交互,执行各种远程操作。无论是简单的命令执行还是复杂的自动化脚本,这个库都能...
根据提供的文件信息,我们可以归纳出以下相关知识点: ### 1. Java SSH 安全访问代码概览 #### 标题解读: - **Java SSH 安全访问代码*...通过这种方式,可以安全地与远程服务器进行交互,执行各种命令并获取其结果。
在描述中提到的"java连接Linux系统远程调用"是指通过Java程序使用SSH2协议来连接到Linux服务器,执行命令或者管理文件系统。这种方式通常在自动化运维、脚本编程或者远程服务调用中非常有用。 下面我们将深入探讨...
JSch是一个纯Java实现的SSH2客户端,它允许Java程序通过SSH连接到远程的Linux服务器,并执行相关的操作。具体步骤如下: 1. 引入JSch库到Java项目中,这可以通过添加Maven依赖或者直接将jar包导入项目中。 2. 创建...
在Java应用程序中,我们可以使用Ganymed SSH-2库来连接Linux服务器,执行命令并获取结果。Ganymed SSH-2库提供了完整的SSH协议实现,包括连接、认证、会话管理、命令执行等功能。 _Java应用程序远程登录Linux的实现...
Linux服务器批处理远程命令执行工具。纯java实现的ssh协议(jsch),支持同时连接多台linux主机,执行相同的命令。只需配置目标主机的ip地址、用户名和密码即可实现远程操作。服务器无需配置ssh对等协议或安装任何...
基于sshConnect的linux服务器的shell命令调用,并获取命令返回结果的实例。亲测有效!
总之,通过Java操作Linux服务器并执行shell脚本,可以实现自动化运维、远程数据获取等多种功能。结合Apache Commons库,我们可以编写出高效、可靠的远程管理工具。在实际开发中,一定要注意安全性,例如使用密钥对...