文档章节

SSH

Pig-man
 Pig-man
发布于 2017/09/12 09:37
字数 383
阅读 18
收藏 0

远程执行Linux命令,依赖ganymed-ssh2.jar

public class SSHUtil {
	
	private static final Logger logger = LoggerFactory.getLogger(SSHUtil.class);
	
	public static String execCommand(String host, int port, String username, String password, String command) {
		String result = "";
		Connection conn = null;
		Session ssh = null;
		try {
			//conn
			conn = new Connection(host, port);
			conn.connect();
			logger.info("Connecting to "+host+":"+port+"...");
			boolean authenticated = conn.authenticateWithPassword(username, password);
			if(!authenticated) {
				logger.info("Username or password is wrong");
			} else {
				logger.info("Connected");
				//open session
				ssh = conn.openSession();
				//exec command
				logger.info("Command start");
				logger.info("Command " + command);
				ssh.execCommand(command);
				InputStream  is = new StreamGobbler(ssh.getStdout());
				BufferedReader br = new BufferedReader(new InputStreamReader(is));
				while(true){
					String line = br.readLine();
					if(line==null){
						break;
					}
					result+= new String(line.getBytes("GBK"),"UTF-8")+"\r\n";
				}
				logger.info("Command end");
				br.close();
			}
		} catch (ConnectException e) {
			e.printStackTrace();
			logger.error("Connection refused", e);
		} catch (Exception e) {
			e.printStackTrace();
			logger.error("Exec command error", e);
		} finally {
			if(ssh!=null) {
				ssh.close();
			}
			if(conn!=null) {
				conn.close();
			}
		}
		return result;
	}
	
	public static void main(String[] args) {
		String host = "192.168.3.9";
		int port = 22;
		String username = "root";
		String password = "redhat";
		String command = "uname -s -r -v";
		String result = execCommand(host, port, username, password, command);
		System.out.println("result="+result);
	}

}
---------------------------------------------------------------------------------------------------------

远程执行Linux命令,依赖jsch.jar(JSch=Java Secure Channel)

public class SSHJSchUtil {
	
	private static final Logger logger = LoggerFactory.getLogger(SSHJSchUtil.class);
	
	public static String execCommand(String host, int port, String username,String password, String command) {
		String result = "";
		Session session = null;
		ChannelExec openChannel =null;
		try {
			//Session
			logger.debug("Connecting to "+host+":"+port+"...");
			JSch jsch=new JSch();
			session = jsch.getSession(username, host, port);
			session.setPassword(password);
			session.setTimeout(2000);
			Properties config = new Properties ();
			config.put("StrictHostKeyChecking", "no");
			session.setConfig(config);
			session.connect();
			logger.debug("Connected");
			//Channel
			logger.debug("Command start");
			logger.debug("Command " + command);
			openChannel = (ChannelExec) session.openChannel("exec");
			openChannel.setCommand(command);
			//int exitStatus = openChannel.getExitStatus();
			openChannel.connect();
			InputStream in = openChannel.getInputStream(); 
			BufferedReader br = new BufferedReader(new InputStreamReader(in));
			while(true){
				String line = br.readLine();
				if(line==null){
					break;
				}
				result+= new String(line.getBytes("GBK"),"UTF-8")+"\r\n";
			}
			br.close();
			logger.debug("Command end");
		} catch (JSchException e) {
			e.printStackTrace();
			logger.error("Connection refused", e);
		} catch (Exception e) {
			e.printStackTrace();
			logger.error("Exec command error", e);
		} finally {
			if(openChannel!=null&&!openChannel.isClosed()){
				openChannel.disconnect();
			}
			if(session!=null&&session.isConnected()){
				session.disconnect();
			}
		}
		return result;
	}
	
	public static void main(String[] args) {
		String host = "192.168.3.9";
		int port = 22;
		String username = "root";
		String password = "redhat";
		String command = "uname -s -r -v";
		String result = execCommand(host, port, username, password, command);
		System.out.println("result="+result);
	}

}

 

 

© 著作权归作者所有

共有 人打赏支持
Pig-man
粉丝 19
博文 62
码字总数 47800
作品 0
青浦
程序员
私信 提问

暂无文章

数据库篇一

数据库篇 第1章 数据库介绍 1.1 数据库概述  什么是数据库(DB:DataBase) 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据...

stars永恒
8分钟前
0
0
Intellij IDEA中设置了jsp页面,但是在访问页面时却提示404

在Intellij IDEA中设置了spring boot的jsp页面,但是在访问时,却出现404,Not Found,经过查找资料后解决,步骤如下: 在Run/Debug Configurations面板中设置该程序的Working Directory选项...

uknow8692
昨天
1
0
day24:文档第五行增内容|每月1号压缩/etc/目录|过滤文本重复次数多的10个单词|人员分组|

1、在文本文档1.txt里第五行下面增加如下内容;两个方法; # This is a test file.# Test insert line into this file. 分析:给文档后增加内容,可以用sed 来搞定;也可以用while do done...

芬野de博客
昨天
1
0
深入理解JVM—JVM内存模型

深入理解JVM—JVM内存模型 我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存...

onedotdot
昨天
1
0
MVC、MVCS、MVVM、MVP、VIPER等这么多架构模式哪一个好呢?

在项目开启阶段,其中一个很重要的环节就是选架构。 那么面对目前已知的这么多架构模式我们该怎么选择呢?这确实是个很让人头疼的问题! 下面我就在这里梳理一下目前常见的一些架构模式。 先...

Java干货分享
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部