[root@bbuwoo etc]$ cat /usr/bin/mrtg2/loadaverage
#!/bin/sh
#
# Scripted by JoungKyun Kim
# 2001.2.15 http://oops.org
# This Script follows GPL2 License
# OS 를 지정
OS=LINUX
# uptime 경로
UPTIME=/usr/bin/uptime
# 서버 운영 시간
DAYS=`$UPTIME | awk '{print $3" "$4}'`
DAY=${DAYS%%,*}
이 부분은 서버의 운영시간을 측정한다. uptime | awk '{print $3" "$4}' 를
실행하면 uptime 결과중 58 days, 1:50, 부분만을 가져온다. 그리고 서버가
부팅이 된지 하루가 안되었다면 1:50, 11 users 와 같이 가져올 것이다. 이
결과값을 shell script의 파라미터 확장을 이용하여 ,다음의 모든 문자를 제
거를 하도록 한다. 그럼 결과값은 58days 또는 1:50 이라는 부분만 남게된다.
이것이 3번째 줄에 출력이 될 서버 운영시간을 구하는 것이다.
이 루틴은 다른 부분에 그대로 적용을 해도 상관이 없을 것이다.
TEMP0=`${UPTIME} | sed -e s/,//g`
TEMP1=${TEMP0##*average:}
이 부분은 uptime 명령에서 확인할수 있는 load average filed중 5분과 15분
평균값만 골라 내도록 하는 부분이다. 그럼 하나씩 분석을 해보도록 하자
먼저 uptime | sed -e s/,//g 의 결과값을 TEMP0 이라는 변수값으로 받는다.
다음 TEMP0 의 결과값에서 average: 라는 문자열을 포함하여 앞을 모두 삭제
하여 TEMP1 이라는 변수로 받는다.
그럼 TEMP0 은 uptime 결과중 쉼표만 삭제할 체로
3:41pm up 58 days 1:57 11 users load average: 0.00 0.00 0.00
와 같이 변수값을 가지게 될것이고 TEMP1 은 위의 결과값에서 average: 앞의
문자열을 모두 삭제한 0.00 0.00 0.00 만이 남게 될 것이다. 즉 5분 10분 15
분의 average 만 남게 되는 것이다.
여기서 set 명령을 이용하여 첫번째 field부터 $1, $2, $3 의 변수로 나누어
준다. 즉 $1 은 5분간의 average가 되고 $3 은 15분간의 average 가 되는 것
이다.
FIVE=$1
FIFT=$3
# 5분 평균값
echo ${FIVE}
# 15분 평균값
echo ${FIFT}
echo $DAY
echo $OS
위와 같이 필요한 값을 구한 다음 차례대로 한줄씩 echo를 해 주면 되는것이다.
IN OUT 개념이 헷갈릴지는 모르겠지만 이부분은 우리가 필요한 값을 출력을 해
준 다음 mrtg.cfg 의 LegendO(output tag) 와 LegendI(input tag) 에서 적당한
이름으로 대체를 해 주면 된다는것이다.
exit 0
[root@bbuwoo etc]$
|