(스크립트는 조건문, 반복문, 함수를 활용하여 작성되었습니다.)
#!/bin/bash
# 로그 파일 정의
LOG_FILE="/var/log/sysadmin.log"
BACKUP_DIR="/backup"
USER_FILE="user_list.txt"
# 로그 기록 함수
log() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> $LOG_FILE
}
# 시스템 자원 모니터링 함수
monitor_system() {
echo "--- 시스템 자원 상태 ---" >> $LOG_FILE
echo "CPU 사용률:" >> $LOG_FILE
top -b -n1 | grep "%Cpu(s)" >> $LOG_FILE
echo "메모리 사용률:" >> $LOG_FILE
free -h >> $LOG_FILE
echo "디스크 사용률:" >> $LOG_FILE
df -h >> $LOG_FILE
echo "-------------------------" >> $LOG_FILE
log "시스템 자원 모니터링 완료"
}
# 사용자 데이터 백업 함수
backup_users() {
if [ ! -d "$BACKUP_DIR" ]; then
mkdir -p "$BACKUP_DIR"
fi
for user in $(cat $USER_FILE); do
home_dir="/home/$user"
if [ -d "$home_dir" ]; then
tar -czf "$BACKUP_DIR/${user}_backup_$(date '+%Y%m%d').tar.gz" "$home_dir"
log "$user의 홈 디렉터리가 성공적으로 백업되었습니다"
else
log "$user의 홈 디렉터리가 존재하지 않습니다"
fi
done
}
# 로그 분석 함수
analyze_logs() {
log "로그 분석 시작"
grep -i "error" /var/log/syslog >> $LOG_FILE
log "로그 분석 완료"
}
# 사용자 관리 함수
manage_users() {
while read -p "사용자 이름 입력 (종료하려면 'exit'): " user; do
if [ "$user" == "exit" ]; then
break
fi
if id "$user" &>/dev/null; then
echo "$user 사용자 계정이 이미 존재합니다."
log "$user 사용자 계정이 이미 존재합니다"
else
sudo useradd -m "$user"
log "$user 사용자 계정이 생성되었습니다"
echo "$user 사용자 계정이 생성되었습니다."
fi
done
}
# 메인 함수
main() {
echo "자동화 스크립트 실행 중..."
log "자동화 스크립트 시작"
monitor_system
backup_users
analyze_logs
manage_users
log "자동화 스크립트 완료"
echo "스크립트 실행이 완료되었습니다."
}
# 스크립트 실행
main
필요 파일 준비
user_list.txt
파일에 백업 대상 사용자 이름을 추가합니다.echo -e "user1\nuser2\nuser3" > user_list.txt
스크립트 실행 권한 부여
chmod +x automation.sh
스크립트 실행
./automation.sh
user_list.txt
)을 읽어 사용자 홈 디렉터리를 압축 백업./var/log/syslog
에서 "error" 메시지를 검색하여 로그 파일에 기록.