################################################################
################################################################
# CENTOS
# 휘발성 및 비-휘발성 시스템 정보 저장하는 스크립트
#
#!/bin/sh
## 자동화위한 변수
## 싱글쿼테이션, 더블쿼테이션으로 묶으면 안에 스트링 자체가 변수로 들어감
CAT_proc='cat /proc/'
CAT_etc='cat /etc/'
## /proc 안에 프로세스번호로 할당된 디렉토리만을 DIR_PROC에 저장
## 백쿼테이션, 결과값이 DIR_PROC 변수로 들어감
DIR_PROC=`ls /proc | grep -v [a-z,A-Z] | sort -n`
## 프로세스별로 수집해야할 목록지정
PROC_V='cmdline environ maps stat statm status mem'
## area 배열의 루프를 위한 초기화
whilecount=0
########## STATIC COMMAND ###############
## 시스템의 비휘발성정보 획득을 위한 명령어
area[0]="uname -a"
area[1]="fdisk -l"
area[2]="df -h"
area[3]="env"
area[4]="set"
area[5]="ps -ef"
area[6]="ifconfig -s"
area[7]="arp -n"
area[8]="netstat -rn"
area[9]="netstat -anlp"
area[10]="lsof -P -l -n"
#area[11]=""
# 명령어 갯수만큼 지정, area[11] 추가시 commandsize도 11로 수정
commandsize=10
###############################
# 연 월 일
DATE_DIR=`date '+%Y_%m_%d'`
#시 분 초
DATE_DIR2=`date '+%H_%M_%S'`
#시스템정보저장을 위한 디렉토리생성
mkdir -p /BackUp/systemlog/$DATE_DIR
######################################################
echo " Please wait.... "
########################## /proc안에 존재하는 비휘발성정보저장
# /BackUp/systemlog/2011_07_18/11_23_24.dat 형식으로 저장
# 추가시 swaps 뒤에 추가
for var in cpuinfo version meminfo modules swaps
do
echo "COMMAND : ">> /BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat
echo "$CAT_proc$var" >> /BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat
echo "-------------------------------------------">> /BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat
$CAT_proc$var >> /BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat
echo "=============================================================================" >>/BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat
done
################# /etc 안에 존재하는 비휘발성 정보 저장
# 추가시 fstab뒤에 추가
# 추가시 fstab뒤에 추가
for var in hosts resolv.conf passwd shadow fstab issue
do
echo "COMMAND : ">> /BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat
echo "$CAT_etc$var" >> /BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat
echo "-------------------------------------------">> /BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat
$CAT_etc$var >> /BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat
echo "=============================================================================" >>/BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat
done
################ 명령어로 확인할 수 있는( area 배열에 저장된 ) 시스템 정보 저장
while [ $commandsize -gt $whilecount ]
do
echo "COMMAND : ">> /BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat
echo ${area[$whilecount]} >> /BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat
echo "-------------------------------------------">> /BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat
${area[$whilecount]} >> /BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat
echo "=============================================================================" >>/BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat
let "whilecount+=1"
done
##########Process 별로 정보저장
echo "For Process....." >>/BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat
# /proc안에 있는 프로세스 목록을 차례로 루프
for var in $DIR_PROC
do
echo "** PRocess Number : $var" >> /BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat
# 각 프로세스별로 읽어들일 파일을 차례로 루프
for var2 in $PROC_V
do
echo "COMMAND : ">> /BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat
echo "$CAT_proc$var/$var2" >> /BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat
echo "-------------------------------------------">> /BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat
# 모든 프로세스마다 위에서 지정한 PROC_V 의 목록이 존재하는게 아니기 때문에, 에러메시지는 아래와같이 처리
$CAT_proc$var/$var2 >> /BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat 2>/dev/null
echo "=============================================================================" >>/BackUp/systemlog/$DATE_DIR/$DATE_DIR2.dat
done
done
echo "SUCCESS...... gogogo /BackUp/systemlog/"
'프로그래밍 > Shell Programming' 카테고리의 다른 글
해당디렉토리의 무결성채크를 위한 정보저장하는 쉘 코드 (0) | 2011.07.14 |
---|---|
sed 깔끔한정리 (0) | 2011.07.13 |
free로 메모리 사용량 채크해서 알려주는 script (0) | 2011.07.13 |
하드디스크 사용량 계산해서 터미널에 뿌려주는 script (0) | 2011.07.13 |
쉘스크립트 예제 코드 (0) | 2011.07.13 |