elixiat 发表于 2015-5-29 10:28:40

分析unix系统日期析取ftp登陆和断开信息

  关于JAVA滴

使用com.enterprisedt.net.ftp库连接客户在HPUnix上的FTP服务器,不定时的出现连接不上去的情况,但是使用FTP客户端却可以直接连接。
客户不让telnet主机,只好要了syslog文件自己分析。
看了一下,相关FTPD的有三个记录
我不管连接的记录(ftp里面的conn操作),只处理login和logout操作。

如下

Dec 23 05:01:44 服务器主机名 ftpd: FTP LOGIN FROM 客户机IP地址 [客户机IP地址], fileplat
Dec 23 05:03:11 服务器主机名 ftpd: FTP session closed
Jan 28 09:28:48 服务器主机名 ftpd: FTP LOGIN FROM unicom-1 [客户机IP地址], fileplat
Jan 28 09:28:50 服务器主机名 ftpd: FTP session closed
Feb 17 21:37:35 服务器主机名 ftpd: FTP LOGIN FROM unicom-1 [客户机IP地址], fileplat
Feb 17 21:58:01 服务器主机名 ftpd: exiting on signal 14
Feb 19 02:38:34 服务器主机名 ftpd: FTP LOGIN FROM 客户机IP地址 [客户机IP地址], fileplat
Feb 19 02:38:35 服务器主机名 ftpd: FTP session closed

ftpd后面的方括号里面是客户登陆之后的进程号(线程号???),确定一个ftp Session。正常退出使用Ftp Session closed。否则是exiting on signal.
下面是简单的程序
程序将一个ftp登陆的数据操作记录到数据库,这样可以分析出客户连接主机的频率和每次时长

因为只用一次,代码很土

java.io.BufferedReader r = new BufferedReader(new java.io.FileReader(
            "E:\\syslog.log"));
      FileWriter f = new FileWriter("e:\\syslog.sql");
      String str = null;
      int nRow = 0;
      java.util.Hashtable hashIpAddress = new java.util.Hashtable();
      java.util.Hashtable hashLoginTime = new java.util.Hashtable();
      while((str = r.readLine()) != null)
      {
            if(false == (
                //(str.indexOf("inetd[")>=0 && str.indexOf("ftp/tcp:")>=0)||
                (str.indexOf("ftpd[") >= 0 && str.indexOf("FTP") >= 0)
               ))
            {
                continue;
            }
  nRow++;
//            if(nRow>100)
//            {
//                break;
//            }
            //System.out.println(str);
            if(str.length() < 16)
            {
                continue;
            }
            String strDate = str.substring(0,16);
            String[] alldates = strDate.split(" ");
//            for(int i =0;i
页: [1]
查看完整版本: 分析unix系统日期析取ftp登陆和断开信息