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
.
.



블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,