질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

리눅스 awk 관련해서 질문드립니다.

작성자 정보

  • 기동v 작성
  • 작성일

컨텐츠 정보

본문

아파치 error_log에서

[Mon May 09 05:37:59 2016] [error] [client 127.0.0.1] client denied by server configuration: /var/www/html/
[Mon May 09 10:17:49 2016] [error] [client IP] client denied by server configuration: /var/www/html/
[Mon May 09 11:53:11 2016] [error] [client IP] client denied by server configuration: /var/www/html/testproxy.php
[Tue May 10 01:54:22 2016] [error] [client IP] client denied by server configuration: /var/www/html/, referer: http://test.com/
[Tue May 10 02:34:47 2016] [error] [client IP] client denied by server configuration: /var/www/html/
[Tue May 10 03:21:03 2016] [notice] SIGHUP received.  Attempting to restart
[Tue May 10 03:21:03 2016] [notice] Digest: generating secret for digest authentication ...
[Tue May 10 03:21:03 2016] [notice] Digest: done

 위 로그에서 cat error_log | awk '{print $1,$2,$3,$4,$5}'  | sort > test.txt 를 통해 앞의 
[Tue May 10 03:21:03 2016] 부분은 출력을 할 수가 있었습니다.

제가 하고싶은 것은
[Tue May 10 03:21:03 2016] [client IP] referer: http://test.com/ 이렇게 출력이 되도록 뽑아내고 싶습니다.

referer가 없으면 넘어가고 있으면 출력하는 형태입니다.


단지 그냥 awk로만 사용해서 할 수가 있는것인지요..?! 도움좀 부탁드립니다.

관련자료

댓글 1

기동v님의 댓글

  • 기동v
  • 작성일
#!/bin/sh

day=`date +%Y%m%d`
test1=/var/log/httpd/test

cd /var/log/httpd

### error_log 시간 IP referer 출력 ###
cat error_log* | awk '{print $1,$2,$3,$4,$5,$7,$8,$14,$15,$16}' > ${test1}/error_test-${day}

이렇게 생각 해보았는데요.. 너무 비효율 적인거 같습니다..

다른 방법이 있을꺼 같긴 한데 쉘스크립팅은 초보라 고수분들의 조언을 부탁드립니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,034 명
  • 현재 강좌수 :  35,787 개
  • 현재 접속자 :  267 명