Jul 10, 2019 - Log 압축 및 관리하기

#!/bin/bash
cd /home/logs/
case $? in
0)
        [ ! -d backup ] && mkdir backup
        find * -mtime +0 | xargs -t -i mv {} backup/{}.bak
        cd backup
        find *.bak | xargs -t -i tar cfz {}.tar {}
        rm -rf *.bak
        find * -mtime +60 | xargs -t -i rm -rf {}
;;
*)
    echo 'directory not found.'
;;
esac

log 자체가 하루에 21G 씩 쌓이다보니, 그대로 유지하기는 무리가 있습니다.
그렇기 때문에, 시간이 지난 파일은 압축을 하여, backup 폴더로 옮기는 작업을 진행하는 것이 좋습니다.
backup 폴더에 쌓이 파일을 30일을 기다렸다가, 지웁니다.

단순 로그성 파일이므로, 해당 파일을 압축하게 되면 100~200M 까지 줄어들게 되어, 서버 관리에 매우 유용합니다.

find * -mtime +0 오늘보다 과거를 의미합니다.

find -mtime -3      3일(72시간)보다 새로움
find -mtime 3       4일(96시간) 전에서 3일(72시간)전까지
find -mtime +3     4일(96시간)전보다 과거

find * -mtime +0 | xargs -t -i mv {} backup/{}.bak 오늘이 아닌 파일(어제 파일) bak 라는 파일명을 붙여서 backup 폴더로 이동시켜라라는 의미가 됩니다.

그리고 backup 폴더로 이동하여, bak 라는 파일명을 가진 파일을 tar 로 압축합니다. (용량 줄이기..) 압축한 후 bak 파일을 지웁니다.
60일 이전 파일을 지웁니다. (2달 파일 이력관리)

Jul 10, 2019 - GOOGLE 크롤링 IP 대역

public static void main(String[] args) {


        String GOOGLE_IP_01= "66.102.0.0,66.249.64.0,64.233.160.0,104.132.0.0,72.14.192.0";
        String GOOGLE_IP_02= "66.102.15.255,66.249.95.255,64.233.191.255,104.135.255.255,72.14.255.255";

        boolean crawling = false;
        long ip = ipToInt("221.142.49.47");
        String[] googleIp1 = GOOGLE_IP_01.split(",");
        String[] googleIp2 = GOOGLE_IP_02.split(",");

        if(googleIp1.length > 0 && googleIp1.length == googleIp2.length) {

            for (int i = 0; i < googleIp1.length; i++) {

                long googleIp01 = ipToInt(googleIp1[i]);
                long googleIp02 = ipToInt(googleIp2[i]);
                if (googleIp01 < ip && googleIp02 > ip) {
                    crawling = true;
                    break;
                }
            }
        }

        System.out.println(crawling);

    }




    public static Long ipToInt(String ipAddr) {
        String[] ipAddrArray = ipAddr.split("\\.");

        long num = 0;
        for (int i = 0; i < ipAddrArray.length; i++) {
            int power = 3 - i;
            /*
             * i의 값으 범위는 0~255 사이이며, 그 값을 256으로 나눈 나머지 값에
             * 256을 power의 값인
             * 1~9 사이는 2,
             * 10~99 사이는 1,
             * 100 이상은 0 의 값에 누승하여 num 값에 더함
             */
            num += ((Integer.parseInt(ipAddrArray[i]) % 256 * Math.pow(256, power)));
        }
        return num;
    }

구글에서 크롤링을 하는 ip 대역. 추가될때마다 계속 추가할 예정..

66.102.0.0 - 66.102.15.255 안에 대역이 구글 대역폭이라 그 안에 들어오는 유입건에 대해서는 무효처리하기 위해, 별도 기능 구현.

Jul 4, 2019 - 네이버에는 ICMP 가 막혀있습니다.

보통 해당 서버가 죽었는지 살았는지 확인하기 위해 PING을 날리곤 합니다.

C:\Users\bymin>ping google.com

Ping google.com [172.217.31.174] 32바이트 데이터 사용:
172.217.31.174의 응답: 바이트=32 시간=42ms TTL=54
172.217.31.174의 응답: 바이트=32 시간=29ms TTL=54
172.217.31.174의 응답: 바이트=32 시간=30ms TTL=54
172.217.31.174의 응답: 바이트=32 시간=29ms TTL=54

172.217.31.174에 대한 Ping 통계:
    패킷: 보냄 = 4, 받음 = 4, 손실 = 0 (0% 손실),
왕복 시간(밀리초):
    최소 = 29ms, 최대 = 42ms, 평균 = 32ms

ping goolge.com 이 이와같은데요.

icpm 프로토콜을 이용해서, 반복해서 호출하게 됩니다.
다만 상태 호스트가 icpm_reply 가 열려있어야 가능한데요.

naver.com의 경우 icmp_reply가 막혀있어서, 응답을 받지 못합니다.

C:\Users\bymin>ping naver.com

Ping naver.com [210.89.160.88] 32바이트 데이터 사용:
요청 시간이 만료되었습니다.
요청 시간이 만료되었습니다.
요청 시간이 만료되었습니다.
요청 시간이 만료되었습니다.

210.89.160.88에 대한 Ping 통계:
    패킷: 보냄 = 4, 받음 = 0, 손실 = 4 (100% 손실),

요청시간이 만료되었습니다!