java ssh2连接_java ssh2 连接并执行 linux命令

ch.ethz.ganymed

ganymed-ssh2

build210

package ;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import ch.ethz.ssh2.Connection;

import ch.ethz.ssh2.Session;

import ch.ethz.ssh2.StreamGobbler;

/**

* @Description 远程执行linux命令

*/

public class SSHUtil {

private String host; // ip

private String username;

private String password;

/**

* @param host(ip)

* @param username(用户名)

* @param password(密码)

*/

public SSHUtil(String host, String username, String password) {

this.host = host;

this.username = username;

this.password = password;

}

private Connection conn = null;

/**

* 连接

*/

private boolean connect() {

conn = new Connection(host);

try {

conn.connect();

if (conn.authenticateWithPassword(username, password)) {

return true;

}

} catch (Exception e) {

e.printStackTrace();

}

return false;

}

/**

* 执行命令

*/

public String execute(String command) {

if (command == null || "null".equals(command)) {

return "传入命令为空!!!";

}

if (!connect()) {

return "连接服务器失败!!!";

}

Session session = null;

try {

session = conn.openSession();

session.execCommand(command);

InputStream stdout = new StreamGobbler(session.getStdout());

BufferedReader br = new BufferedReader(new InputStreamReader(stdout));

StringBuffer sb = new StringBuffer();

// ExitCode正常为0

// 1:报错、2:误用命令、126:命令不得执行、127:没找到命令、130:ctrl+c结束、255:返回码超出范围

sb.append("ExitCode: " + session.getExitStatus() + "\n");

while (true) {

String line = br.readLine();

if (line == null)

break;

sb.append(line + "\n");

}

return sb.toString();

} catch (IOException e) {

e.printStackTrace();

return "error";

} finally {

if (conn != null) {

conn.close();

}

if (session != null) {

session.close();

}

}

}

}

每次执行不同的对象的时候都会重新连接一次,懒得判断。

execCommand(cmd) 方法好像可以传进去一个String数组,懒得测。

我执行的命令经常给我返回ExitCode: null

反正正确执行了也懒得查什么原因了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值