- 浏览: 55231 次
文章分类
最新评论
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++;
}
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 651public static void main(String ... -
java 日志页面展示 抓取远程的文件
2015-03-18 15:53 840/** * 抓取远程的文件 * * @param u ... -
uploadify 上传文件
2014-10-16 10:51 598js: <script type="tex ... -
uploadify 谷歌刷新崩溃
2014-10-16 10:45 594由于谷歌浏览器缓存,引入js文件带个动态参数这里为时间 ... -
按对象(class)的某个字段将list 排序
2014-06-16 18:08 408声明: 排序类:HttpSendAndRev ... -
java日期处理
2014-04-30 13:51 309Calendar c = Calendar.getInst ... -
java clalendar日历 计算几个月后的日期
2013-09-09 18:59 886Calendar calendar=Calendar. ...
相关推荐
java上传文件到linux服务器,操作linux服务器上文件,下载linux服务器文件,删除linux服务器文件。ganymed-ssh2远程操作服务器文件
java远程访问linux服务器操作 远程执行shll脚本或者命令、上传下载文件 package com.szkingdom.kfit.bank.ccbDirectShortcut.helper; import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.SCPClient; import ...
本地cmd命令, 输入命令, 并在控制台输出命令执行结果 jsch 远程ssh到linux服务器, 执行结果并显示输出
Linux服务器批处理远程命令执行工具。纯java实现的ssh协议(jsch),支持同时连接多台linux主机,执行相同的命令。只需配置目标主机的ip地址、用户名和密码即可实现远程操作。服务器无需配置ssh对等协议或安装任何...
基于sshConnect的linux服务器的shell命令调用,并获取命令返回结果的实例。亲测有效!
ssh工具 用于连接远程服务器 linux 系统 解压 安装即可使用
通过简单的java程序测试Linux服务器内存使用、回收情况,排查Linux服务器内存使用异常的情况
Java运用ganymed-ssh2-build210.jar包远程连接操作linux服务器 (SCP和SFTP的运用)
通过linux的SSH端口使用java代码远程对指定的linux服务器上执行shell命令,实测有用
java连接linux服务器,并且可以做各种操作。内部使用多线程处理,可以持续与linux服务器进行交互操作,完全跟使用ssh客户端一样。
ssh-helperssh助手,可以很方便的在开发工具内部快捷的通过ssh登录远程linux服务器,并执行任何linux命令使用时,只需简单修改server.xml,将可能用到的linux服务器信息配置进来,然后运行Main即可
1.linux系统环境 命令交互通道 命名提示符 2. linux 目录结构、文件权限 drwxr-xr-x 3. linux 命令 - 开关机 - 文件操作 - 系统命令 1....搭建Java服务器,并且实现远程安全访问linux系统
Ganymed SSH-2 for Java是用纯Java实现SSH-2协议的一个包。可以利用它直接在Java程序中连接SSH服务器,执行linux命令
Java 代码通过 SSH 连接远程批量执行 Linux/UNIX 系统上的命令或者脚本,同时加入了判断成功与否,取回输出等多种 实用功能。 文档参考 https://www.ibm.com/developerworks/cn/opensource/os-sshxcute/
由国内著名技术社区联合推荐的2012年IT技术力作:《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》,即将上架发行,此书从Web应用、数据备份与恢复、网络存储应用、运维监控与性能优化、集群高级应用等...
ssh2 一些错误问题的记录
每次开机自动启动的java进程,页面上的关机按钮都无法实现关机功能,但是此时如果以chb账号通过ssh登录该服务器,手动杀掉tomcat进程,然后再重新启动tomcat,页面上的关机按钮就有效了
jenkins的war包,解压rar后将war包通过ssh复制到服务器中,在服务器中找到指定目录,然后java -jar jekins.war,即可运行jekins,然后通过服务器地址:9000就可以打开jekins.
通过SSH/Putty客户端连接Linux服务器。 *****配完环境变量需要再输入:source /etc/profile才能生效。 命令: 1.ifconfig:查看ip地址 2.java -version:查看jdk的版本 3.rpm -qa | grep 软件的名称:查找和指定...
该插件将连接到您选择的JuiceSSH连接并执行命令以监视服务器的性能。 有关如何发现各种统计信息的详细信息,请查看以下类: 有关JuiceSSH插件SDK的详细信息,其功能,安全信息以及如何开始编写插件,请查看我们的 ...