java 远程监控服务器_java实现远程连接服务器,监控某个目录下的日志文件

import java.io.BufferedReader;

import java.io.DataInputStream;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.util.ArrayList;

import java.util.List;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

import ch.ethz.ssh2.Connection;

import ch.ethz.ssh2.SCPClient;

import ch.ethz.ssh2.SFTPv3Client;

import ch.ethz.ssh2.Session;

import ch.ethz.ssh2.StreamGobbler;

public class TestRemoteConnect

{

public static void main(String[] args)

{

String hostname = "xxx.xxx.xxx.xxx";

int port = 22;

String username = "xxx";

String password = "xxx";

Connection conn = new Connection(hostname,port);

Session ssh = null;

try

{

//连接到主机

conn.connect();

//使用用户名和密码校验

boolean isconn = conn.authenticateWithPassword(username, password);

if (!isconn)

{

System.out.println("用户名称或者是密码不正确");

}

else

{

System.out.println("已经连接OK");

File folder = new File("D://logs");

if(!folder.exists()){

folder.mkdir();

}

SCPClient clt = conn.createSCPClient();

ssh = conn.openSession();

ssh.execCommand("find /dev/shm/M/ -name '*.txt'");

InputStream is = new StreamGobbler(ssh.getStdout());

BufferedReader brs = new BufferedReader(new InputStreamReader(is));

while (true)

{

String line = brs.readLine();

if (line == null)

{

break;

}

clt.get(line, "D://logs");

List lf = new ArrayList();

test1 t = new test1();

lf = t.getFileList(new File("D://logs"),"txt");

for(File f:lf){

/*System.out.println(f.getPath());*/

String path=f.getPath();

File file = new File(path);

try{

FileReader fr = new FileReader(file);

BufferedReader br = new BufferedReader(fr);

String s = null;

Pattern p = Pattern.compile(".*?error.*?");

while((s = br.readLine()) != null){

Matcher m = p.matcher(s);

if(m.find()) {

/*System.out.println(m.matches());*/

System.out.println(line);

System.out.println("find error!");

}/*else{

System.out.println("no error");

}*/

}

br.close();

}catch(FileNotFoundException e){

System.err.println("file not found");

}catch(IOException e){

e.printStackTrace();

}

}

}

}

}

catch (IOException e)

{

System.out.println(e.getMessage());

e.printStackTrace();

}

finally

{

//连接的Session和Connection对象都需要关闭

if(ssh!=null)

{

ssh.close();

}

if(conn!=null)

{

conn.close();

}

}

}

public List getFileList(File fileDir,String fileType){

List lfile = new ArrayList();

File[] fs = fileDir.listFiles();

for(File f:fs){

if(f.isFile()){

if (fileType.equals(f.getName().substring(f.getName().lastIndexOf(".")+1, f.getName().length())))

lfile.add(f);

}else{

List ftemps = getFileList(f, fileType);

lfile.addAll(ftemps);

}

}

return lfile;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值