grep ( 및 sed awk 등등 ) 을 사용한 정규표현식은
문자 및 데이터를 가공하는 시작과, 마지막 끝이라고 봐도 됩니다.
기초과정에서 복잡하게 생각할 필요는 없고
RHCSA 에서는 간단하게 Apache Log 가공하는 형식 정도만 짚고 넘어가도록 하겠습니다.
[ AWK ] Apache access Log 에서 접속 IP 숫자별로 정렬하기
1) 해당 Log 출력 root@Web1:~# cat /usr/local/apache2/logs/access_log 210.90.168.131 - - [14/Mar/2019:00:09:21 +0900] "GET / HTTP/1.1" 200 44 210.90.168.131 - - [14/Mar/2019:00:09:21 +0900] "GET /favicon.ico HTTP/1.1" 404 209 210.90.168.131 - - [14/Mar/2019:00:09:32 +0900] "GET /apm_ver.php HTTP/1.1" 200 20 14/Mar/2019:16:07:42 +0900] "GET /favicon.ico HTTP/1.1" 404 209 211.115.203.215 - - [14/Mar/2019:16:07:45 +0900] "GET /php_ver.php HTTP/1.1" 404 209 . . 2) 첫번째 줄에 있는 IP 만 추출하기 파이프로 awk '{ print $1 }' 추가 root@Web1:~# cat /usr/local/apache2/logs/access_log | awk '{ print $1 }' 210.90.168.131 210.90.168.131 211.115.203.215 211.115.203.215 . . 3) 동일 IP들의 수량으로 출력하기 파이프로 uniq -c 입력하여 동일패턴의 갯수화 및 높은 수량대로 정렬 sort -rn root@Web1:~# cat /usr/local/apache2/logs/access_log | awk '{ print $1 }' | uniq -c | sort -rn | head -n 5 470 115.159.107.118 468 111.230.52.108 452 182.253.72.44 452 124.156.176.170 451 148.70.140.176 access.log 에 가장 많이 보이는 IP 5개가 수량으로 추출. |
[grep]
-i : 대소문자 가리지 않음
-e : 확장된 정규 표현식 ( extended regex ) 사용
-v : 매칭된 문자를 제외하고.
ex) /etc/passwd
root@Web1:~# grep "nologin" /etc/passwd "nologin" 이 포함된 라인만 출력. bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin root@Web1:~# grep -v "nologin" /etc/passwd nologin 이 없는 라인만 출력. root:x:0:0:root:/root:/bin/bash sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt myungin.baek:x:1000:1000::/home/myungin.baek:/bin/bash mysql:x:1001:1001::/home/mysql:/bin/false guest:x:1002:1002::/home/guest:/bin/bash root@Web1:~# cat /usr/local/apache2/conf/httpd.conf | grep -v "#" | grep -v "^$" # 들어가는 주석 라인 및 ^$ (시작과 끝이 같은 행. 즉 빈줄 ) 제거 출력. ServerRoot "/usr/local/apache2" Listen 80 LoadModule authn_file_module modules/mod_authn_file.so . . |
'Linux ( Cent OS ) > RHCSA ' 카테고리의 다른 글
[RHCSA] 로그인하여 다중 사용자 대상 내의 사용자 전환 (0) | 2019.04.17 |
---|---|
[RHCSA] ssh를 사용하여 원격 시스템에 액세스 (0) | 2019.04.17 |
[RHCSA] 입력-출력 리디렉션(>, >>, |, 2> 등) 사용 (1) | 2019.04.16 |
[RHCSA] 셸 프롬프트에 액세스하고 올바른 구문으로 명령 생성 (0) | 2019.04.16 |
[RHCSA] 시험 등록 및 대비 (0) | 2019.04.16 |