package com.sep.conn;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
public class Shell
{
private static final Logger logger = LoggerFactory.getLogger(Shell.class);
/**
* 远程主机的ip地址
*/
private String ip;
/**
* 远程主机的端口号
*/
private int port;
/**
* 远程主机登录用户名
*/
private String username;
/**
* 远程主机的登录密码
*/
private String password;
/**
* 设置ssh连接的远程端口
*/
//public static final int DEFAULT_SSH_PORT = 22;
/**
* 保存输出内容的容器
*/
private List<String> stdout;
/**
* 初始化登录信息
* @param ip
* @param username
* @param password
*/
public Shell(final String ip, final int port, final String username, final String password)
{
this.ip = ip;
this.port = port;
this.username = username;
this.password = password;
stdout = new ArrayList<String>();
}
/**
* 执行shell命令
*
* @param command
* @return
*/
public int execute(final String command)
{
int returnCode = 0;
JSch jsch = new JSch();
MyUserInfo userInfo = new MyUserInfo();
try
{
// 创建session并且打开连接,因为创建session之后要主动打开连接
Session session = jsch.getSession(username, ip, port);
session.setPassword(password);
session.setUserInfo(userInfo);
session.connect();
// 打开通道,设置通道类型,和执行的命令
Channel channel = session.openChannel("exec");
ChannelExec channelExec = (ChannelExec) channel;
channelExec.setCommand(command);
channelExec.setInputStream(null);
BufferedReader input = new BufferedReader(new InputStreamReader(channelExec.getInputStream()));
channelExec.connect();
logger.debug("The remote command is :" + command);
// 接收远程服务器执行命令的结果
String line;
while ((line = input.readLine()) != null)
{
stdout.add(line);
}
input.close();
// 得到returnCode
if (channelExec.isClosed())
{
returnCode = channelExec.getExitStatus();
}
// 关闭通道
channelExec.disconnect();
// 关闭session
session.disconnect();
} catch (JSchException e)
{
logger.error("" + e);
} catch (Exception e)
{
logger.error("" + e);
}
return returnCode;
}
/**
* get stdout
*
* @return
*/
public List<String> getStandardOutput()
{
return stdout;
}
public static void main(final String[] args)
{
Shell shell = new Shell("xxx.xxx.xxx.xxx", 22, "username", "password");
shell.execute("uname -s -r -v");
List<String> stdout = shell.getStandardOutput();
for (String str : stdout)
{
logger.debug(str);
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
SSH连接远程服务器的一个简单的工程
共17个文件
jar:5个
class:3个
java:3个
需积分: 9 8 下载量 185 浏览量
2017-03-15
23:17:04
上传
评论 1
收藏 690KB RAR 举报
温馨提示
SSH连接远程服务器的一个简单的工程,里面包含代码示例以及相关jar包.还有Log4j的简单配置和相关jar包
资源推荐
资源详情
资源评论
收起资源包目录
ConnLinux.rar (17个子文件)
ConnLinux
bin
log4j.properties 1KB
com
sep
conn
ConnTes.class 3KB
Shell.class 4KB
MyUserInfo.class 2KB
.settings
org.eclipse.core.resources.prefs 69B
org.eclipse.jdt.core.prefs 598B
src
log4j.properties 1KB
com
sep
conn
Shell.java 3KB
ConnTes.java 2KB
MyUserInfo.java 1KB
.project 385B
.classpath 614B
lib
jsch-0.1.42.jar 181KB
slf4j-api-1.6.1.jar 25KB
commons-logging-1.1.1.jar 59KB
slf4j-log4j12-1.6.6.jar 9KB
log4j-1.2.17.jar 478KB
共 17 条
- 1
资源评论
十三月流萤
- 粉丝: 3
- 资源: 33
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功