【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<File> lf = new ArrayList<File>();  
                    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<File> getFileList(File fileDir,String fileType){    
        List<File> lfile = new ArrayList<File>();  
        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<File> ftemps = getFileList(f, fileType);  
                lfile.addAll(ftemps);  
            }  
        }         
        return lfile;  
    }  
}

 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值