[Linux] 자동화 쉘 스크립트 작성

오진선·2025년 1월 6일
0

Cloud

목록 보기
13/17
post-thumbnail

시스템 관리, 백업, 로그 분석 및 사용자 관리

개요

  1. 시스템 자원 모니터링
  2. 사용자 데이터 백업
  3. 로그 파일 분석
  4. 사용자 계정 관리

(스크립트는 조건문, 반복문, 함수를 활용하여 작성되었습니다.)


쉘 스크립트 코드

#!/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

스크립트 실행 단계

  1. 필요 파일 준비

    • user_list.txt 파일에 백업 대상 사용자 이름을 추가합니다.
    echo -e "user1\nuser2\nuser3" > user_list.txt
  2. 스크립트 실행 권한 부여

    chmod +x automation.sh
  3. 스크립트 실행

    ./automation.sh

주요 기능 설명

1. 시스템 자원 모니터링

  • CPU, 메모리, 디스크 사용량을 확인하여 로그 파일에 기록.

2. 사용자 데이터 백업

  • 사용자 목록(user_list.txt)을 읽어 사용자 홈 디렉터리를 압축 백업.

3. 로그 파일 분석

  • /var/log/syslog에서 "error" 메시지를 검색하여 로그 파일에 기록.

4. 사용자 계정 관리

  • 사용자 계정 존재 여부를 확인하고, 없으면 새 계정을 생성.

profile
₍ ᐢ. ̫ .ᐢ ₎

0개의 댓글