`
yangjizhong24
  • 浏览: 395738 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java中使用ssh方式获取服务器的文件到本地

阅读更多
package com.chinacahe.LogContrast.ssh;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;


import org.apache.commons.io.FileUtils;
import org.apache.log4j.Logger;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.SCPClient;

import com.chinacahe.LogContrast.base.LognameIntoDB;
import com.chinacahe.LogContrast.base.RemoteFileGetter;
import com.chinacahe.LogContrast.Constants;

public class SPZRemoteFileGetter implements RemoteFileGetter{

	Logger logger = Logger.getLogger(getClass());
	private String ip;
	private int port;
	private String path;
	private String dev_id;
	private String dev_name;
	private String date;


	ApplicationContext context = new ClassPathXmlApplicationContext(
			new String[] { "classpath*:applicationContext*.xml" });


	public void getRemoteFile() {
		
		
		LognameIntoDB lognameIntoDB=(LognameIntoDB)context.getBean("lognameIntoDB");
		
		
		Connection connection = null;
		List<String> lognames=new ArrayList<String>();
		try {
			connection = new Connection(ip, port);//远程服务器IP,端口
			connection.connect();//建立连接
			boolean isAuthenticated = connection.authenticateWithPassword(
					Constants.LOGIN_USER, Constants.LOGIN_PASSWORD);//服务器用户名,密码
			if (!isAuthenticated) {
				throw new IOException("Authentication Failed.");
			}
			
			logger.info("Connecting to "+ ip + ":" + port + "successful");
			SCPClient client = new SCPClient(connection);
		
				try{
					String servlogname=new File(path).getName();//path是服务器的文件名路径
					client.get(path, Constants.TEMP_DIR+ File.separator);//Constants.TEMP_DIR+ File.separator:要存入的本地目录
					
					if(new File(Constants.TARGET_DIR+File.separator + servlogname).exists()){

						new File(Constants.TARGET_DIR+File.separator + servlogname).delete();
						
					}
					FileUtils.moveFileToDirectory(
							new File(Constants.TEMP_DIR+ File.separator + servlogname),
							new File(Constants.TARGET_DIR),
							false);
					
									}
				catch(Exception e){
					logger.info("catching file "+ ip + ":" + port + ":" + path + " failed " + e.getMessage());
				}
			
			
			logger.info("Finished "+ ip + ":" + port);
			
		}
		catch(Exception e){
			logger.info("Failed connecting to "+ ip + ":" + port);
			
		}
		finally{
			if(connection != null){
				connection.close();
			}
		}
		
		
	}

	public void run() {
		getRemoteFile();
	}
	
	
	public  List<String> parseFiletoList(String filename){
		
		File file = new File(Constants.TARGET_DIR+ File.separator + filename);
		List<String> lognames=new ArrayList<String>();
		
		
			try {
			
				
				InputStream is = new FileInputStream(file);
				
				BufferedReader reader = new BufferedReader(new InputStreamReader(is));
				
				String line;
				int index = 0;
				while ((line = reader.readLine()) != null) {
					index++;
					lognames.add(line);
					
				}
				
				
			} catch (Exception e) {
				e.printStackTrace();
			}
		
		return lognames;
		
	}
	
	public String getIp() {
		return ip;
	}

	public void setIp(String ip) {
		this.ip = ip;
	}

	public int getPort() {
		return port;
	}

	public void setPort(int port) {
		this.port = port;
	}
	public String getPath() {
		return path;
	}

	public void setPath(String path) {
		this.path = path;
	}
	public String getDev_id() {
		return dev_id;
	}

	public void setDev_id(String devId) {
		dev_id = devId;
	}

	public String getDev_name() {
		return dev_name;
	}

	public void setDev_name(String devName) {
		dev_name = devName;
	}
	public String getDate() {
		return date;
	}

	public void setDate(String date) {
		this.date = date;
	}




}

 

 

 

执行远程服务器的系统命令并获取内容:

boolean isAuthenticated = connection.authenticateWithPassword(user, password);

	
			logger.info("Connecting to " + ip + ":" + port + "successful");

			Session sess = connection.openSession();

			sess.execCommand("/usr/local/squid/bin/rotateBilling.sh -v");

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

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

			StringBuffer sb = new StringBuffer();
			while (true) {

				String line = br.readLine();
				if (line == null)
					break;
				sb.append(line);

			}
			if (sb.toString().indexOf("0.0.4") < 0) {
				sess.close();
				connection.close();
				logger.error(selectdev + ":" + dev_name + ":" + ip + ":" + errortime
						+ ": shell file version isn't 0.0.4");
				return;
			}
			sess.close();

 

 

 

 

分享到:
评论
1 楼 baishui2004 2012-08-10  
您好,我使用Orion SSH2执行启动Tomcat的命令,提示需要JRE_HOME或JAVA_HOME,但是这环境变量已配置,且我通过SSH Secure Shell却可以启动成功。是不是Orion SSH2执行的命令不能识别环境变量,如何解决?多谢。

相关推荐

    JAVA上百实例源码以及开源项目

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    JAVA上百实例源码以及开源项目源代码

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    java开源包8

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包11

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包6

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包9

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包4

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包101

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包5

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包10

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包1

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包3

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包2

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包7

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    Java资源包01

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    ssh(structs,spring,hibernate)框架中的上传下载

    3在Spring中使用org.springframework.jdbc.support.lob.OracleLobHandler处理Oracle数据库的Blob类型字段。  通过这样的设置和配置,我们就可以象持久化表的一般字段类型一样处理Blob字段了。  以上是Spring+...

    java面试宝典

    156、在jsp:useBean语法中使用beanName有何好处? 37 157、当我使用时,在浏览器的地址栏没有改变? 37 158、如何转换JSP 0.9版本的文件到JSP1.1? 37 160、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么...

    SN-External-Credentials:Service Now 的外部凭证插件的 Java 类。 允许将机器的 UNPW 用于发现存储在本地客户端的中间服务器上,而不是在 Service Now 中存储在云中

    存储在使用 Windows DPAPI 加密加密的本地文件中。 概述 有时,出于安全原因,客户端不希望在 Service Now 的实例中存储本地联网机器的凭据。 当 MID 服务器启动某些需要访问客户端机器并必须通过 SSH、SNMP 或 ...

    集群好书《高性能Linux服务器构建实战》 试读章节下载

    5.6.2 添加密钥到授权密钥文件中 5.7 unison的使用 5.7.1 本地使用unison 5.7.2 远程使用unison 5.7.3 unison参数说明 5.7.4 通过配置文件来使用unison 5.8 本章小结 第6章 ext3文件系统反删除利器...

Global site tag (gtag.js) - Google Analytics