当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

使用JSCH连接Linux服务器(1)-执行linux命令

发表于: 2011-09-08   作者:chenxu_8456   来源:转载   浏览次数:
摘要: 在java中可以使用jsch连接远程Linux服务器,并在服务器上执行传送命令,同时该jar包也可以使用ftp在服务器上上传下载文件,本节讲述如何通过该jar包传送linux命令并且执行: package com.aliyun.utility.jsch; import java.io.InputStream; import java.util.Properties; import
在java中可以使用jsch连接远程Linux服务器,并在服务器上执行传送命令,同时该jar包也可以使用ftp在服务器上上传下载文件,本节讲述如何通过该jar包传送linux命令并且执行:
package com.aliyun.utility.jsch;

import java.io.InputStream;
import java.util.Properties;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

public class JSCHUtil {
	private static JSCHUtil instance;

	public static JSCHUtil getInstance() {
		if (instance == null) {
			instance = new JSCHUtil();
		}
		return instance;
	}

	private JSCHUtil() {

	}

	private Session getSession(String host, int port, String ueseName)
			throws Exception {
		JSch jsch = new JSch();
		Session session = jsch.getSession(ueseName, host, port);
		return session;
	}

	public Session connect(String host, int port, String ueseName,
			String password) throws Exception {
		Session session = getSession(host, port, ueseName);
		session.setPassword(password);
		Properties config = new Properties();
		config.setProperty("StrictHostKeyChecking", "no");
		session.setConfig(config);
		session.connect();
		return session;
	}

	public String execCmd(Session session, String command) throws Exception {
		if (session == null) {
			throw new RuntimeException("Session is null!");
		}
		ChannelExec exec = (ChannelExec) session.openChannel("exec");
		InputStream in = exec.getInputStream();
		byte[] b = new byte[1024];

		exec.setCommand(command);
		exec.connect();
		StringBuffer buffer = new StringBuffer();
		while (in.read(b) > 0) {
			buffer.append(new String(b));
		}
		exec.disconnect();

		return buffer.toString();
	}

	public void clear(Session session) {
		if (session != null && session.isConnected()) {
			session.disconnect();
			session = null;
		}
	}

	public static void main(String[] args) throws Exception {
		Session session = JSCHUtil.getInstance().connect("10.9.9.135", 22,
				"yy", "yy");
		String cmd = "cd /" + ";" + "ls -al |grep home";
		String result = JSCHUtil.getInstance().execCmd(session, cmd);// 多条命令之间以;分隔
		System.out.println(result);
		System.exit(0);
	}
}

使用JSCH连接Linux服务器(1)-执行linux命令

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
通过使用远程SHELL执行框架 sshxcute 实现远程登录Linux并执行命令。 sshxcute 项目地址: http://c
最主要的是学会利用man command来查询命令的用法。 man -f command列出所有的,可以选择显示指定的
http://blog.csdn.net/xh16319/article/details/17302947 http://www.iteye.com/problems/42186 一
1、登录之后进入linux系统,输入ifconfig(interfaces config)查看网卡信息 2、设置VMWare的虚拟机连
系统:RHEL 5.6 X86_64 在Linux安装Oracle时需要图形界面,可以通过vnc或xmanager进行图形连接,现
1、运行WinSCP工具,新建站点,输入主机名、用户名、密码,点击“保存(S)...”按钮 2、点击“确定
简介 iftop是类似于linux下面top的实时流量监控工具。 iftop可以用来监控网卡的实时流量(可以指定
在日志文件中查找日志,难免要用到vi的一些指令,慢慢积累,命令多了,也记不住,难免会要记录一下:
第一行给出当前服务器时间,启动时间,当前登录用户,以及系统负载情况。需要注意的是linux的系统负
我是一个Linux的初学者,经验肯定没有大牛们那么全面,但是我很想把自己在学习过程中的所有所学和一
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号