################################################################
################################################################
#             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뒤에 추가  
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/"


AND