'리눅스'에 해당되는 글 14건
2008/07/28 21:23
[시스템이야기]
2주전의 일인 것 같다. 문득, 리눅스에서는 인터페이스명이 eth0, eth1 처럼 사용하는데, 반드시 eth로 시작해야할까라는 생각이 들었다. 서버에 있는 2개의 랜카드중 하나만 설정을 변경해봤다. /etc/sysconfig/network-scripts/ifcfg-eth1을 ifcfg-coffeenix0을 변경하고, 설정값 중 DEVICE=coffeenix0로 설정한 다음 리부팅했다. (CentOS 기준)
아~ 임의로 인터페이스명을 지정해도 된다.
'그럼 변경해서 뭐하냐? 쓸모 없는 것 같고...'라고 한다면, 인터페이스명을 보고 직관성을 높일 수 있다. 미러링을 하는 포트라면 mir0 처럼 인터페이스를 설정하면 보다 직관적으로 확인이 가능할 것 같다. 랜카드가 3개이상이고, 그 중 하나는 meta data 통신용이라면 meta0처럼 지정하면 보다 쉽게 알 수 있을 것이다. 참고로 ifcfg-eth1 파일명을 그대로 두고 안의 DEVICE= 설정만 변경해도 된다. 단지 파일명은 직관적으로 보기위한 용도일뿐이다.
주의할 것은 몇몇 프로그램은 eth로 시작하지 않는 것은 인식하지 못할 수도 있다는 것. mii-tool은 eth0~eth7의 인터페이스만 자동으로 체크하므로 다른 인터페이스일 경우 별도로 지정해줘야 한다. sysctl로 'net.ipv4.conf.인터페이스명' 설정시 인터페이스별로 설정하여 사용해왔다면 이부분도 수정이 필요하다.
고정관념이 무섭다. ^^
DEVICE=coffeenix0
BOOTPROTO=static
BROADCAST=192.168.XX.XXX
HWADDR=00:0F:XX:XX:XX:XX
IPADDR=192.168.XX.XXX
BOOTPROTO=static
BROADCAST=192.168.XX.XXX
HWADDR=00:0F:XX:XX:XX:XX
IPADDR=192.168.XX.XXX
아~ 임의로 인터페이스명을 지정해도 된다.
# ifconfig
coffeenix0 Link encap:Ethernet HWaddr 00:0F:XX:XX:XX:XX
inet addr:192.168.XX.XXX Bcast:192.168.XX.XXX Mask:255.255.XXX.XXX
inet6 addr: ...생략.../64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13 errors:0 dropped:0 overruns:0 frame:0
TX packets:453 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:832 (832.0 b) TX bytes:47862 (46.7 KiB)
Interrupt:217
eth0 Link encap:Ethernet HWaddr 00:0F:XX:XX:XX:XX
... 생략 ...
coffeenix0 Link encap:Ethernet HWaddr 00:0F:XX:XX:XX:XX
inet addr:192.168.XX.XXX Bcast:192.168.XX.XXX Mask:255.255.XXX.XXX
inet6 addr: ...생략.../64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13 errors:0 dropped:0 overruns:0 frame:0
TX packets:453 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:832 (832.0 b) TX bytes:47862 (46.7 KiB)
Interrupt:217
eth0 Link encap:Ethernet HWaddr 00:0F:XX:XX:XX:XX
... 생략 ...
'그럼 변경해서 뭐하냐? 쓸모 없는 것 같고...'라고 한다면, 인터페이스명을 보고 직관성을 높일 수 있다. 미러링을 하는 포트라면 mir0 처럼 인터페이스를 설정하면 보다 직관적으로 확인이 가능할 것 같다. 랜카드가 3개이상이고, 그 중 하나는 meta data 통신용이라면 meta0처럼 지정하면 보다 쉽게 알 수 있을 것이다. 참고로 ifcfg-eth1 파일명을 그대로 두고 안의 DEVICE= 설정만 변경해도 된다. 단지 파일명은 직관적으로 보기위한 용도일뿐이다.
주의할 것은 몇몇 프로그램은 eth로 시작하지 않는 것은 인식하지 못할 수도 있다는 것. mii-tool은 eth0~eth7의 인터페이스만 자동으로 체크하므로 다른 인터페이스일 경우 별도로 지정해줘야 한다. sysctl로 'net.ipv4.conf.인터페이스명' 설정시 인터페이스별로 설정하여 사용해왔다면 이부분도 수정이 필요하다.
# mii-tool
eth0: negotiated 100baseTx-FD, link ok
# mii-tool coffeenix0
coffeenix0: negotiated 100baseTx-FD, link ok
eth0: negotiated 100baseTx-FD, link ok
# mii-tool coffeenix0
coffeenix0: negotiated 100baseTx-FD, link ok
고정관념이 무섭다. ^^
'시스템이야기' 카테고리의 다른 글
| tail명령에서 -F(대문자) 옵션을 아시나요? (2) | 2008/08/31 |
|---|---|
| 인터페이스명으로 eth를 사용할 필요없다. (2) | 2008/07/28 |
| apache 1.3과 2.x에서 php의 SERVER_NAME변수 (0) | 2008/06/09 |
| 웹서버에서 gzip압축 전송을 지원하는 주요 사이트는? (2) | 2008/05/17 |
| 아파치 웹로그에 접속자 국가코드를 남겨보자 (0) | 2008/04/23 |
| FreeBSD 7.0 사용기 (2) | 2008/03/07 |
2008/04/22 00:52
[IT이야기]
CrossOver Office로 잘 알려진 CodeWeavers에서 리눅스와 Mac에서 윈도우즈 게임을 할 수 있는 CrossOver Games 7.0.0 을 발표했다. 발표한지는 시간이 좀 지났는데, 국내 리눅스 관련 커뮤니티나 블로그에서는 조용해서, 얘기를 끄집어 낸다.

CrossOver Games은 최신 Wine을 만들어졌으며, 맥 OS X는 Tiger와 Leopard에서 모두 잘 동작한다. 그리고, 리눅스는 우분투(Ubuntu) 7.10과 데비안(Debian) Etch에서 테스트가 되었다. 2개의 배포판에서 테스트되었다는 뜻이지 다른 배포판에서 안되는 것은 아니다. 공식 홈페이지에는 없는 내용이지만, FreeBSD와 FreeBSD기반의 데스크탑BSD인 PC-BSD, DesktopBSD에서도 운영되는 것으로 알려졌다. ( ./ 의 'CrossOver Games for FreeBSD' 참고)
지원하는 게임은 World of Warcraft(WoW), EVE Online, Guild Wars, Prey, Half-Life 2, Team Fortress 2, Counterstrike 등 다양하며, 전체 게임 목록은 CrossOver Games의 Compatibility 페이지에서 확인할 수 있다.


구글의 리눅스용 피카사(Picasa)가 Wine을 최적화하여 만들어진 것인데, 윈도우즈보다는 느리게 동작한다. CrossOver Games도 Wine기반이다보니, 게임할 때 느려지는 문제가 있을 건데, 게임에 지장이 없을 만큼 속도감을 주느냐가 CrossOver Games의 가치 판단 기준이 될 것 같다.
CrossOver Games은 최신 Wine을 만들어졌으며, 맥 OS X는 Tiger와 Leopard에서 모두 잘 동작한다. 그리고, 리눅스는 우분투(Ubuntu) 7.10과 데비안(Debian) Etch에서 테스트가 되었다. 2개의 배포판에서 테스트되었다는 뜻이지 다른 배포판에서 안되는 것은 아니다. 공식 홈페이지에는 없는 내용이지만, FreeBSD와 FreeBSD기반의 데스크탑BSD인 PC-BSD, DesktopBSD에서도 운영되는 것으로 알려졌다. ( ./ 의 'CrossOver Games for FreeBSD' 참고)
지원하는 게임은 World of Warcraft(WoW), EVE Online, Guild Wars, Prey, Half-Life 2, Team Fortress 2, Counterstrike 등 다양하며, 전체 게임 목록은 CrossOver Games의 Compatibility 페이지에서 확인할 수 있다.
[ 이미지 출처 : CrossOver Games 에서 ]
Linux, Mac 버전 모두 39.95달러이며, trial 버전을 홈페이지에서 받아볼 수 있다.구글의 리눅스용 피카사(Picasa)가 Wine을 최적화하여 만들어진 것인데, 윈도우즈보다는 느리게 동작한다. CrossOver Games도 Wine기반이다보니, 게임할 때 느려지는 문제가 있을 건데, 게임에 지장이 없을 만큼 속도감을 주느냐가 CrossOver Games의 가치 판단 기준이 될 것 같다.
'IT이야기' 카테고리의 다른 글
| 구글 웹브라우저, 크롬 사용기 (4) | 2008/09/03 |
|---|---|
| 네이트온 메신저 쪽지로 배포되는 웜 조심 (2) | 2008/07/10 |
| 리눅스에서 윈도우즈 게임을... CrossOver Games (16) | 2008/04/22 |
| 다음(Daum) 요즘 잦은 서비스 장애 (4) | 2008/04/19 |
| FreeBSD 7 관련 도서 2권 (0) | 2008/04/18 |
| MySQL 5.1이 정식 버전(GA)으로 나올 예정 (2) | 2008/04/16 |
|
Tracked from Forest : Behind everywhere | 2008/06/25 21:27 | DEL
맥오에스에서 vmware마저 지워버린지 일주일 가량이 지났다. '급할 때 잠시 쓰는' 용도로 VM을 만들고 사용하기에는 맥북 에어의 하드디스크 용량이 충분하지 않았고, 마침 우분투 소식을 통해서 wine 1.0이 나왔다는 소식도 접했다. 그래서 맥오에스용 wine을 찾아보다가, codeweaver 의 CrossOver 체험판을 설치했다. 어차피 가뭄에 콩 나듯 어플리케이션 세 가지 (Internet Explorer 6/7, MS Office 200... |
2008/04/01 14:29
[IT이야기]
아침부터 구글의 사투리 번역( http://www.google.co.kr/landing/saturi/ )과 티스토리의 '샨새교 교주'검색( http://tistory.com/AF/searchAF/ )등으로 떠들썩하다. 4월은 늘 이렇게 떠들썩하게 시작한다.

kernel.org도 만우절 이벤트(?)에 동참하기 위해 재밌는 메일링을 발송했다. 발송시간이 'Tue, 01 Apr 2008 01:01:17'. 제목 또한 눈에 띤다. 'Kernel.org Downtime Notice - Please read *very* important'. mirror 서버, 공개된 서버, 백엔드 마스터 서버 등 kernel.org의 모든 서버를 OS 업그레이드를 이유로 서버를 내린다는 것이다. 그것도 'Linux Kernel Organization'에서 리눅스를 안쓰고 FreeBSD를 쓰겠다는 얘기를 꺼낸다. FC5에서 FreeBSD 7.0로 ^^. 메일의 뒷부분에는 SlashDot의 링크 등을 걸어놓으며, 이러한 결정하게된 근거를 써놨다. 가볍게 결정하지 않은 것 처럼 말이지...
메일링 전체 내용 : http://lkml.org/lkml/2008/3/31/367
이 메일링에 대한 답변( http://lkml.org/lkml/2008/3/31/369 ) 또한 재밌다.
매우 훌률하다고 칭찬의 말로 띄워준다. 이번에 RFC1149(CPIP) 서술된 요구사항을 만족시키기 위해, 네트웍 설비 또한 업그레이드할 기회를 가져야 한다고 덧붙인다. 여기서 재밌는 것은 RFC1149다. RFC1149(Standard for the transmission of IP datagrams on avian carriers, 조류를 이용한 IP datagrams 전송 표준)는 RFC 유머중에 하나로, 공식 RFC문서가 아니다. CPIP는(Carrier Pigeon Internet Protocol)는 얘기 안해도 이해가 될 것이다.
kernel.org도 만우절 이벤트(?)에 동참하기 위해 재밌는 메일링을 발송했다. 발송시간이 'Tue, 01 Apr 2008 01:01:17'. 제목 또한 눈에 띤다. 'Kernel.org Downtime Notice - Please read *very* important'. mirror 서버, 공개된 서버, 백엔드 마스터 서버 등 kernel.org의 모든 서버를 OS 업그레이드를 이유로 서버를 내린다는 것이다. 그것도 'Linux Kernel Organization'에서 리눅스를 안쓰고 FreeBSD를 쓰겠다는 얘기를 꺼낸다. FC5에서 FreeBSD 7.0로 ^^. 메일의 뒷부분에는 SlashDot의 링크 등을 걸어놓으며, 이러한 결정하게된 근거를 써놨다. 가볍게 결정하지 않은 것 처럼 말이지...
메일링 전체 내용 : http://lkml.org/lkml/2008/3/31/367
I and the other Kernel.org admins would like to announce downtime for
ALL kernel.org machines (this includes all of the mirror machines, the
public machines and the backend master). The downtime is scheduled to
start on or around April 2nd, 2008 on or around 0001 UTC.
After much deliberation, research and argument in #korg (along with
screaming matches between HPA and I over dinner) we are upgrading the
kernel.org machines from Fedora Core 5 to FreeBSD 7.0. This decision
does not come lightly to the Kernel.org admins, and we would like to
point out several key things that helped us form our decision:
ALL kernel.org machines (this includes all of the mirror machines, the
public machines and the backend master). The downtime is scheduled to
start on or around April 2nd, 2008 on or around 0001 UTC.
After much deliberation, research and argument in #korg (along with
screaming matches between HPA and I over dinner) we are upgrading the
kernel.org machines from Fedora Core 5 to FreeBSD 7.0. This decision
does not come lightly to the Kernel.org admins, and we would like to
point out several key things that helped us form our decision:
이 메일링에 대한 답변( http://lkml.org/lkml/2008/3/31/369 ) 또한 재밌다.
Highly commendable. You should take this opportunity to also upgrade
network facilities to meet the requirements as laid out in RFC1149 (CPIP).
network facilities to meet the requirements as laid out in RFC1149 (CPIP).
매우 훌률하다고 칭찬의 말로 띄워준다. 이번에 RFC1149(CPIP) 서술된 요구사항을 만족시키기 위해, 네트웍 설비 또한 업그레이드할 기회를 가져야 한다고 덧붙인다. 여기서 재밌는 것은 RFC1149다. RFC1149(Standard for the transmission of IP datagrams on avian carriers, 조류를 이용한 IP datagrams 전송 표준)는 RFC 유머중에 하나로, 공식 RFC문서가 아니다. CPIP는(Carrier Pigeon Internet Protocol)는 얘기 안해도 이해가 될 것이다.
'IT이야기' 카테고리의 다른 글
| openssh 5.0 릴리즈 (2) | 2008/04/06 |
|---|---|
| 중국 정부기관 사이트도 해킹당한다. (4) | 2008/04/05 |
| kernel.org가 4월 2일쯤 서버를 전부 내린다고? (5) | 2008/04/01 |
| 2mb.co.kr 도메인이 있었네 (6) | 2008/03/22 |
| F1 경기장, 세팡 서킷(Sepang Circuit) 사이트 DNS 해킹당해 (0) | 2008/03/20 |
| DDoS 대응과 botnet 동향 (CONCERT 2008 보안 세미나 후기) (2) | 2008/03/16 |
2008/02/11 23:22
[시스템이야기]
리눅스 커널 2.6.17부터 2.26.24.1 까지의 vmsplice() 콜의 버그로 로컬에서 root 권한을 획득할 수 있다. KLDP에도 나와있듯이, milw0rm에는 2개의 local root exploit 코드가 공개되어 있다. 테스트결과 너무 쉽게 root 권한이 획득되었다.
개인사용자나 외부 접근이 제한된 시스템은 그나마 다행인데, 커널 2.6.x을 사용하는 호스팅업체나 공동 사용 서버는 빨리 대처해야할 것이다. 커널 패치를 적용하여 리부팅을 해야할 것이나 재부팅할 수 없는 서버도 있을 것이다. 이 땐 임시 메모리 패치와 hkpco님의 방어 커널 모듈을 이용하면 된다.
* 관련글
------------------------------------------------------------------
[ 내용 추가 ]
*2.13(수) 현재 RHEL5, Cent5 패치 커널 나옴
http://lists.centos.org/pipermail/centos-announce/2008-February/014684.html
https://rhn.redhat.com/errata/RHSA-2008-0129.html
$ uname -r
2.6.18-8.1.8.el5
$ ./exploit
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[+] mmap: 0x0 .. 0x1000
[+] page: 0x0
[+] page: 0x20
[+] mmap: 0x4000 .. 0x5000
[+] page: 0x4000
[+] page: 0x4020
[+] mmap: 0x1000 .. 0x2000
[+] page: 0x1000
[+] mmap: 0xb7ee1000 .. 0xb7f13000
[+] root
# id
uid=0(root) gid=0(root) groups=501(truefeel)
#
2.6.18-8.1.8.el5
$ ./exploit
-----------------------------------
Linux vmsplice Local Root Exploit
By qaaz
-----------------------------------
[+] mmap: 0x0 .. 0x1000
[+] page: 0x0
[+] page: 0x20
[+] mmap: 0x4000 .. 0x5000
[+] page: 0x4000
[+] page: 0x4020
[+] mmap: 0x1000 .. 0x2000
[+] page: 0x1000
[+] mmap: 0xb7ee1000 .. 0xb7f13000
[+] root
# id
uid=0(root) gid=0(root) groups=501(truefeel)
#
개인사용자나 외부 접근이 제한된 시스템은 그나마 다행인데, 커널 2.6.x을 사용하는 호스팅업체나 공동 사용 서버는 빨리 대처해야할 것이다. 커널 패치를 적용하여 리부팅을 해야할 것이나 재부팅할 수 없는 서버도 있을 것이다. 이 땐 임시 메모리 패치와 hkpco님의 방어 커널 모듈을 이용하면 된다.
* 관련글
http://kldp.org/node/90926 (이은태님)
http://barosl.com/blog/entry/linux-vmsplice-local-root-exploit (랜덤여신님)
http://www.carstory.co.kr/474 (hkpco님)
http://barosl.com/blog/entry/linux-vmsplice-local-root-exploit (랜덤여신님)
http://www.carstory.co.kr/474 (hkpco님)
------------------------------------------------------------------
[ 내용 추가 ]
*2.13(수) 현재 RHEL5, Cent5 패치 커널 나옴
http://lists.centos.org/pipermail/centos-announce/2008-February/014684.html
https://rhn.redhat.com/errata/RHSA-2008-0129.html
====================================================================
Package Arch Version Repository Size
==================================================================== Installing:
kernel i686 2.6.18-53.1.13.el5 updates 13 M
kernel-devel i686 2.6.18-53.1.13.el5 updates 4.7 M
Updating:
kernel-headers i386 2.6.18-53.1.13.el5 updates 785 k
====================================================================
==================================================================== Installing:
kernel i686 2.6.18-53.1.13.el5 updates 13 M
kernel-devel i686 2.6.18-53.1.13.el5 updates 4.7 M
Updating:
kernel-headers i386 2.6.18-53.1.13.el5 updates 785 k
====================================================================
'시스템이야기' 카테고리의 다른 글
| FreeBSD 7.0 사용기 (2) | 2008/03/07 |
|---|---|
| FreeBSD 7.0 릴리즈 (2) | 2008/02/28 |
| 리눅스 커널 2.6.17~2.6.24.1의 root권한 획득 버그 발견 (5) | 2008/02/11 |
| DDoS 막을 수 있나? 없나? (6) | 2008/01/26 |
| 로그 모니터링시 특정 문자를 highlight하기 (2) | 2008/01/10 |
| SSL 운영(https)시 도메인기반 Virtual host가 안되는 이유 (4) | 2007/09/19 |
|
Tracked from 랜덤여신의 폐인모드 | 2008/02/12 00:25 | DEL
리눅스 시스템의 일반 사용자 계정에서 프로그램(exploit)을 돌려서 관리자(root) 권한을 획득할 수 있는 보안 취약점이 발견되었습니다. 시스템에 계정이 있는 공격자가 root 권한을 얻을 수 있습니다. vmsplice() 시스템 콜에 보안 구멍이 있는 것이 원인이라고 합니다. 버그가 있는 버전은 2.6.17 부터 2.6.24.1 이며, 현재 최신 버전은 오늘 나온 2.6.24.2입니다. 사실상 요즘에 설치한 서버 모두가 대상입니다. 위에서... |
|
Tracked from NiDEV's Tistory :D | 2008/02/12 12:54 | DEL
비상입니다. root 쉘이 바로 곧장 떨어지는거 보고 저 잠시 숨을 쉴수 없었습니다. 커널 2.6.17버전부터 2.6.24-r1까지. (vmsplice exploit 방지 패치가 먹히기 이전의.) 모두 먹히는 익스플로잇이더군요. 실행과 동시에 바로 일반유저에서 root 로 바뀌는게 정말 멋있더군요. 어떤 사람들이 이런걸 찾아낼 수 있을까요? 아직 커널의 'ㅋ'도 제대로 알지 못하는 저로서는 그저 신기할 따름입니다. 일반 데스크탑 유저들에게는 크게 지.. |
2008/01/10 19:55
[시스템이야기]
apache 웹로그, php 에러로그, syslog를 통한 로그를 모니터링할 때 특정 문자열에 대해서는 highlight해주면 원하는 부분만 쉽게 볼 수 있을 것이다. 또한 수치를 모니터링하는 경우, 0~59는 양호, 60~79 주의, 80~99는 경고를 나타내기위해 각각 녹색, 파란색, 빨간색으로 표시해준다면, 많은 로그가 순간적으로 스크롤되더라도 눈에 쉽게 띌 것이다.
이 글은 highlight 처리를 해주는 1) sed를 이용한 쉘스크립트와 2) 이보다 더 나은 perl 스크립트를 통해 모니터링하는 방법을 설명한다.
1. sed를 이용한 highlight 스크립트
* view.sh 내려받기
사용은 tail -f 로그파일명 |./view.sh 형태로 사용하면 된다.
첫번째 부분은 색깔을 정의한 변수이다. 여기서 ^[[;31m ANSI코드로, ^[ 문자는 ESC키를 의미한다. 쉘에서 입력할 때 Ctrl+V를 누른 후 ESC키를 누르면 입력할 수 있다. 색깔은 사용하는 터미널에 따라서 약간 다르게 표시될 수도 있다.

그 다음부터는 sed를 이용해서 문자열을 변환처리하며, 한줄당 하나의 정규표현식을 사용하였다. 부분적으로 살펴보자.
기본적으로 -e s/변환전문자열/변환후문자열/g 형식을 사용하는데, 위는 syslog를 통해 남은 로그중 'Oct 30'과 같이 '월일'을 표시하지 않기 위한 정규표현식이다.
첫번째줄은 특정 IP대역을 highlight하기 위한 것으로 서버의 IP, 접속하는 PC의 IP등을 한줄에 하나씩 적어주면 좋을 것이다. 두번째줄의 \ 은 보기 좋게 구분하기 위한 것이며, 세번째와 네번째줄은 각각 httpd와 vsftpd를 highlight한다.
첫번째줄은 'nfs server'로 문자열이 나온다면, 해당 줄 끝까지 highlight한다. ${szColYe}\\1과 server과 ${szColYe}\\1$szNormal 의 차이를 생각하면 쉽게 이해가 될 것이다. 세번째줄은 줄의 끝부분에서 색깔 표시는 정상으로 돌려놓으라는 의미이다.
2. perl을 이용한 highlight 스크립트
위의 예제를 통해서 원하는 문자열을 원하는 색깔로 highlight하는 것은 쉽게 할 수 있을 것이다. 이젠 perl이용한 방법을 소개한다.
* view.pl 내려받기
사용은 shell스크립트를 사용할 때와 동일하게 tail -f 로그파일명 |./view.pl 형태로 사용하면 된다.
첫번째줄에서 192\.168\.123\.[1-9][0-9]{0,2} 은 sed를 이용할 때보다 더 정교하게 IP를 체크한 것으로, 1) 192.168.123. 시작하는 IP대역 2) 그 다음 1~9까지 숫자이고, 그다음에 숫자가 오게된다면 0~9까지 숫자가 0자리~2자리까지 가능하다. 정규 표현식에 대한 자세한 사항은 이 글의 주제를 벗어나는 내용이므로 '4 참고 자료'를 살펴보기 바란다. 세번째줄은 vsftpd, proftpd, ftpd 등의 문자를 highlight한다.
다음은 위의 스크립트를 이용하여 로그를 모니터링한 화면이다.

3. 수치에 따라 다른 색으로 표시
어떤 로그에 수치가 다음과 같이 실시간으로 쌓인다고 가정하자. 그리고, 그 수치는 'disk 54'와 같은 형태로 되어 있다.
--------- ------ --------
측정수치 상태 색깔
--------- ------ --------
0~59 양호 녹 색
60~79 주의 파란색
80~100 경고 빨간색
--------- ------ --------
다음은 perl을 이용하여 색을 표시하는 예이다. 그리고, 수치가 80이상일 땐 beep음을 발생한다. 이런한 방법은 서버의 load, disk 사용량, disk I/O, 커넥션 수, 메모리 사용량 등을 모니터링할 때 유용하게 사용할 수 있다.
4. 참고 자료
* ANSI color codes
http://pueblo.sourceforge.net/doc/manual/ansi_color_codes.html
* 정규표현식
http://coffeenix.net/dir_catagory.php?cata_code=99
* Perl regular expressions
http://www.perl.com/doc/manual/html/pod/perlre.html
이 글은 highlight 처리를 해주는 1) sed를 이용한 쉘스크립트와 2) 이보다 더 나은 perl 스크립트를 통해 모니터링하는 방법을 설명한다.
1. sed를 이용한 highlight 스크립트
* view.sh 내려받기
#!/bin/bash
#
# 특정 문자를 highlight한다. (view.sh)
#
# by 좋은진호(truefeel, http://coffeenix.net/ )
# color
szColBk="^[[;30m"; szColBk1="^[[1;30m" # black
szColRe="^[[;31m"; szColRe1="^[[1;31m" # red
szColGr="^[[;32m"; szColGr1="^[[1;32m" # green
szColYe="^[[;33m"; szColYe1="^[[1;33m" # yellow
szColBl="^[[;34m"; szColBl1="^[[1;34m" # blue
szColPu="^[[;35m"; szColPu1="^[[1;35m" # magenta(purple)
szColCy="^[[;36m"; szColCy1="^[[1;36m" # cyan
szColGy="^[[;37m"; szColWh="^[[1;37m" # white
szNormal="^[[;m"
#
sed \
-e "s/^[A-Z][a-z][a-z] *[0-9]* //g" \
\
-e "s/ \(192.168.123.[0-9]*\)/${szColGr} \\1$szNormal/g" \
\
-e "s/\(httpd\)/${szColCy}\\1$szNormal/g" \
-e "s/\(vsftpd\)/${szColCy}\\1$szNormal/g" \
-e "s/\(proftpd\)/${szColCy}\\1$szNormal/g" \
-e "s/\(ftpd\)/${szColCy}\\1$szNormal/g" \
-e "s/\(sshd\)/${szColCy}\\1$szNormal/g" \
-e "s/\(xinetd\)/${szColCy}\\1$szNormal/g" \
-e "s/\(Connection attempt\)/${szColRe1}\\1$szNormal/g" \
-e "s/\(authentication failure\)/${szColRe1}\\1$szNormal/g" \
-e "s/\(BAD SU\)/${szColRe1}\\1$szNormal/g" \
\
-e "s/\(nfs server\)/${szColYe}\\1/g" \
\
-e "s/$/$szNormal/g"
[/quote]#
# 특정 문자를 highlight한다. (view.sh)
#
# by 좋은진호(truefeel, http://coffeenix.net/ )
# color
szColBk="^[[;30m"; szColBk1="^[[1;30m" # black
szColRe="^[[;31m"; szColRe1="^[[1;31m" # red
szColGr="^[[;32m"; szColGr1="^[[1;32m" # green
szColYe="^[[;33m"; szColYe1="^[[1;33m" # yellow
szColBl="^[[;34m"; szColBl1="^[[1;34m" # blue
szColPu="^[[;35m"; szColPu1="^[[1;35m" # magenta(purple)
szColCy="^[[;36m"; szColCy1="^[[1;36m" # cyan
szColGy="^[[;37m"; szColWh="^[[1;37m" # white
szNormal="^[[;m"
#
sed \
-e "s/^[A-Z][a-z][a-z] *[0-9]* //g" \
\
-e "s/ \(192.168.123.[0-9]*\)/${szColGr} \\1$szNormal/g" \
\
-e "s/\(httpd\)/${szColCy}\\1$szNormal/g" \
-e "s/\(vsftpd\)/${szColCy}\\1$szNormal/g" \
-e "s/\(proftpd\)/${szColCy}\\1$szNormal/g" \
-e "s/\(ftpd\)/${szColCy}\\1$szNormal/g" \
-e "s/\(sshd\)/${szColCy}\\1$szNormal/g" \
-e "s/\(xinetd\)/${szColCy}\\1$szNormal/g" \
-e "s/\(Connection attempt\)/${szColRe1}\\1$szNormal/g" \
-e "s/\(authentication failure\)/${szColRe1}\\1$szNormal/g" \
-e "s/\(BAD SU\)/${szColRe1}\\1$szNormal/g" \
\
-e "s/\(nfs server\)/${szColYe}\\1/g" \
\
-e "s/$/$szNormal/g"
사용은 tail -f 로그파일명 |./view.sh 형태로 사용하면 된다.
첫번째 부분은 색깔을 정의한 변수이다. 여기서 ^[[;31m ANSI코드로, ^[ 문자는 ESC키를 의미한다. 쉘에서 입력할 때 Ctrl+V를 누른 후 ESC키를 누르면 입력할 수 있다. 색깔은 사용하는 터미널에 따라서 약간 다르게 표시될 수도 있다.
그 다음부터는 sed를 이용해서 문자열을 변환처리하며, 한줄당 하나의 정규표현식을 사용하였다. 부분적으로 살펴보자.
1: -e "s/^[A-Z][a-z][a-z] *[0-9]* //g" \
기본적으로 -e s/변환전문자열/변환후문자열/g 형식을 사용하는데, 위는 syslog를 통해 남은 로그중 'Oct 30'과 같이 '월일'을 표시하지 않기 위한 정규표현식이다.
1: -e "s/ \(192.168.123.[0-9]*\)/${szColGr} \\1$szNormal/g" \
2: \
3: -e "s/\(httpd\)/${szColCy}\\1$szNormal/g" \
4: -e "s/\(vsftpd\)/${szColCy}\\1$szNormal/g" \
2: \
3: -e "s/\(httpd\)/${szColCy}\\1$szNormal/g" \
4: -e "s/\(vsftpd\)/${szColCy}\\1$szNormal/g" \
첫번째줄은 특정 IP대역을 highlight하기 위한 것으로 서버의 IP, 접속하는 PC의 IP등을 한줄에 하나씩 적어주면 좋을 것이다. 두번째줄의 \ 은 보기 좋게 구분하기 위한 것이며, 세번째와 네번째줄은 각각 httpd와 vsftpd를 highlight한다.
1: -e "s/\(nfs server\)/${szColYe}\\1/g" \
2: \
3: -e "s/$/$szNormal/g"
2: \
3: -e "s/$/$szNormal/g"
첫번째줄은 'nfs server'로 문자열이 나온다면, 해당 줄 끝까지 highlight한다. ${szColYe}\\1과 server과 ${szColYe}\\1$szNormal 의 차이를 생각하면 쉽게 이해가 될 것이다. 세번째줄은 줄의 끝부분에서 색깔 표시는 정상으로 돌려놓으라는 의미이다.
2. perl을 이용한 highlight 스크립트
위의 예제를 통해서 원하는 문자열을 원하는 색깔로 highlight하는 것은 쉽게 할 수 있을 것이다. 이젠 perl이용한 방법을 소개한다.
* view.pl 내려받기
#!/usr/bin/perl
#
# 특정 문자를 highlight한다. (view.pl)
#
# by 좋은진호(truefeel, http://coffeenix.net/ )
# color
$szColBk ="^[[;30m"; $szColBk1 ="^[[1;30m"; # black
$szColRe ="^[[;31m"; $szColRe1 ="^[[1;31m"; # red
$szColGr ="^[[;32m"; $szColGr1 ="^[[1;32m"; # green
$szColYe ="^[[;33m"; $szColYe1 ="^[[1;33m"; # yellow
$szColBl ="^[[;34m"; $szColBl1 ="^[[1;34m"; # blue
$szColPu ="^[[;35m"; $szColPu1 ="^[[1;35m"; # magenta(purple)
$szColCy ="^[[;36m"; $szColCy1 ="^[[1;36m"; # cyan
$szColGy ="^[[;37m"; $szColWh ="^[[1;37m"; # white
$szNormal="^[[;m";
#
$szBeep="\a";
#
while(<STDIN>) {
# log에서 필요없는 부분 삭제
s/^[A-Z][a-z][a-z] *[0-9]* //g;
# IP
s/(192\.168\.123\.[1-9][0-9]{0,2})/$szColGr$1$szNormal/g;
# 줄 끝은 정상 색으로 변경
s/$/$szNormal/;
# 원하는 문자열에 색을 입힌다
s/(httpd)/$szColCy$1$szNormal/g;
s/(vsftpd|proftpd|ftpd)/$szColCy$1$szNormal/g;
s/(sshd)/$szColCy$1$szNormal/g;
s/(xinetd)/$szColCy$1$szNormal/g;
s/(Connection attempt)/$szColRe1$1$szNormal/g;
s/(authentication failure)/$szColRe1$1$szNormal/g;
s/(BAD SU)/$szColRe1$1$szNormal/g;
# 원하는 문자열을 찾으면 줄 끝까지 색을 읽힌다.
s/(nfs server)/$szColYe$1/g;
print $_;
}
#
# 특정 문자를 highlight한다. (view.pl)
#
# by 좋은진호(truefeel, http://coffeenix.net/ )
# color
$szColBk ="^[[;30m"; $szColBk1 ="^[[1;30m"; # black
$szColRe ="^[[;31m"; $szColRe1 ="^[[1;31m"; # red
$szColGr ="^[[;32m"; $szColGr1 ="^[[1;32m"; # green
$szColYe ="^[[;33m"; $szColYe1 ="^[[1;33m"; # yellow
$szColBl ="^[[;34m"; $szColBl1 ="^[[1;34m"; # blue
$szColPu ="^[[;35m"; $szColPu1 ="^[[1;35m"; # magenta(purple)
$szColCy ="^[[;36m"; $szColCy1 ="^[[1;36m"; # cyan
$szColGy ="^[[;37m"; $szColWh ="^[[1;37m"; # white
$szNormal="^[[;m";
#
$szBeep="\a";
#
while(<STDIN>) {
# log에서 필요없는 부분 삭제
s/^[A-Z][a-z][a-z] *[0-9]* //g;
# IP
s/(192\.168\.123\.[1-9][0-9]{0,2})/$szColGr$1$szNormal/g;
# 줄 끝은 정상 색으로 변경
s/$/$szNormal/;
# 원하는 문자열에 색을 입힌다
s/(httpd)/$szColCy$1$szNormal/g;
s/(vsftpd|proftpd|ftpd)/$szColCy$1$szNormal/g;
s/(sshd)/$szColCy$1$szNormal/g;
s/(xinetd)/$szColCy$1$szNormal/g;
s/(Connection attempt)/$szColRe1$1$szNormal/g;
s/(authentication failure)/$szColRe1$1$szNormal/g;
s/(BAD SU)/$szColRe1$1$szNormal/g;
# 원하는 문자열을 찾으면 줄 끝까지 색을 읽힌다.
s/(nfs server)/$szColYe$1/g;
print $_;
}
사용은 shell스크립트를 사용할 때와 동일하게 tail -f 로그파일명 |./view.pl 형태로 사용하면 된다.
1: s/(192\.168\.123\.[1-9][0-9]{0,2})/$szColGr$1$szNormal/g;
2: ... 생략...
3: s/(vsftpd|proftpd|ftpd)/$szColCy$1$szNormal/g;
2: ... 생략...
3: s/(vsftpd|proftpd|ftpd)/$szColCy$1$szNormal/g;
첫번째줄에서 192\.168\.123\.[1-9][0-9]{0,2} 은 sed를 이용할 때보다 더 정교하게 IP를 체크한 것으로, 1) 192.168.123. 시작하는 IP대역 2) 그 다음 1~9까지 숫자이고, 그다음에 숫자가 오게된다면 0~9까지 숫자가 0자리~2자리까지 가능하다. 정규 표현식에 대한 자세한 사항은 이 글의 주제를 벗어나는 내용이므로 '4 참고 자료'를 살펴보기 바란다. 세번째줄은 vsftpd, proftpd, ftpd 등의 문자를 highlight한다.
다음은 위의 스크립트를 이용하여 로그를 모니터링한 화면이다.
3. 수치에 따라 다른 색으로 표시
어떤 로그에 수치가 다음과 같이 실시간으로 쌓인다고 가정하자. 그리고, 그 수치는 'disk 54'와 같은 형태로 되어 있다.
--------- ------ --------
측정수치 상태 색깔
--------- ------ --------
0~59 양호 녹 색
60~79 주의 파란색
80~100 경고 빨간색
--------- ------ --------
다음은 perl을 이용하여 색을 표시하는 예이다. 그리고, 수치가 80이상일 땐 beep음을 발생한다. 이런한 방법은 서버의 load, disk 사용량, disk I/O, 커넥션 수, 메모리 사용량 등을 모니터링할 때 유용하게 사용할 수 있다.
s/(disk [0-9][^0-9])/$szColGr$1$szNormal/;
s/(disk [1-5][0-9][^0-9])/$szColGr$1$szNormal/;
s/(disk [6-7][0-9])/$szColBl$1$szNormal/;
s/(disk [8-9][0-9])/$szColRe1$1$szNormal$szBeep/;
s/(disk 100)/$szColRe1$1$szNormal$szBeep/;
s/(disk [1-5][0-9][^0-9])/$szColGr$1$szNormal/;
s/(disk [6-7][0-9])/$szColBl$1$szNormal/;
s/(disk [8-9][0-9])/$szColRe1$1$szNormal$szBeep/;
s/(disk 100)/$szColRe1$1$szNormal$szBeep/;
4. 참고 자료
* ANSI color codes
http://pueblo.sourceforge.net/doc/manual/ansi_color_codes.html
* 정규표현식
http://coffeenix.net/dir_catagory.php?cata_code=99
* Perl regular expressions
http://www.perl.com/doc/manual/html/pod/perlre.html
'시스템이야기' 카테고리의 다른 글
| 리눅스 커널 2.6.17~2.6.24.1의 root권한 획득 버그 발견 (5) | 2008/02/11 |
|---|---|
| DDoS 막을 수 있나? 없나? (6) | 2008/01/26 |
| 로그 모니터링시 특정 문자를 highlight하기 (2) | 2008/01/10 |
| SSL 운영(https)시 도메인기반 Virtual host가 안되는 이유 (4) | 2007/09/19 |
| apache 웹방화벽 modsecurity용 웹설정 툴, Remo (2) | 2007/06/11 |
| sshfs로 원격 파일시스템을 마운트해서 사용하기 (0) | 2007/05/20 |
Trackback Address :: http://truefeel.tistory.com/trackback/81




이올린에 북마크하기
이올린에 추천하기