[DevOps] 5. 사용자 관리 (스크립트)

GisangLee·2025년 7월 9일
0

devops

목록 보기
5/11

뉴비가 들어왔다. 일일이 명령어를 입력하는 거말고 여러 게정을 파일에서 가져와 한 번에 만들자

주요 명령어

| IFS

  • internal Field Separator
  • 문자열을 나눌 때 기준이 되는 문자를 정의하는 환경 변수
  • echo $IFS 하면 default 값인 공백이 보이고, 이를 수정하는 것도 가능

| Here Document 방식

  • bash <<< " 요딴 방식

스크립트

$ cat > users.csv << 'EOF'
> psj,park seojun
> jkj,jin kijoo
> osk,oh seonkeun
> EOF

생성

#!/bin/bash

# ========== 🎨 스타일 설정 ==========
bold=$(tput bold)
normal=$(tput sgr0)
green="\033[1;32m"
red="\033[1;31m"
yellow="\033[1;33m"
blue="\033[1;34m"
cyan="\033[1;36m"
reset="\033[0m"

function title()   { echo -e "\n${blue}${bold}🔷 $1${reset}"; }
function success() { echo -e "${green}$1${reset}"; }
function warn()    { echo -e "${yellow}⚠️  $1${reset}"; }
function error()   { echo -e "${red}$1${reset}"; }
function info()    { echo -e "${cyan}ℹ️  $1${reset}"; }

# ========== 🗂️ 기본 정보 ==========
input='users.csv'
default_password='changeme123'

title "👥 사용자 계정 생성 시작"
info  "📝 입력 파일         : $input"
info  "🔐 초기 비밀번호     : $default_password"
echo -e "────────────────────────────────────────────"

# ========== 🔁 사용자 생성 루프 ==========
while IFS="," read -r loginname name; do
  if [ -z "$loginname" ] || [ -z "$name" ]; then
    warn "빈 행 또는 필드 누락 - 건너뜀"
    continue
  fi

  info "👤 생성 중: ${bold}$loginname${normal} (${name})"

  if id "$loginname" &>/dev/null; then
    warn "$loginname 이미 존재함 - 건너뜀"
    continue
  fi

  sudo useradd -c "$name" -m "$loginname"
  if [ $? -ne 0 ]; then
    error "$loginname 생성 실패"
    continue
  fi

  echo "$loginname:$default_password" | sudo chpasswd
  if [ $? -eq 0 ]; then
    success "$loginname 계정 생성 완료"
  else
    error "$loginname 비밀번호 설정 실패"
  fi
done < "$input"

# ========== ✅ 완료 ==========
title "🏁 사용자 생성 스크립트 종료"
echo

삭제

#!/bin/bash

# ========== 🎨 스타일 설정 ==========
bold=$(tput bold)
normal=$(tput sgr0)
green="\033[1;32m"
red="\033[1;31m"
yellow="\033[1;33m"
blue="\033[1;34m"
cyan="\033[1;36m"
reset="\033[0m"

function title()   { echo -e "\n${blue}${bold}🔷 $1${reset}"; }
function success() { echo -e "${green}$1${reset}"; }
function warn()    { echo -e "${yellow}⚠️  $1${reset}"; }
function error()   { echo -e "${red}$1${reset}"; }
function info()    { echo -e "${cyan}ℹ️  $1${reset}"; }

# ========== 🗂️ 기본 정보 ==========
input='users.csv'

title "🗑️ 사용자 계정 삭제 시작"
info  "📝 입력 파일     : $input"
echo -e "────────────────────────────────────────────"

# ========== 🔁 사용자 삭제 루프 ==========
while IFS="," read -r loginname name; do
  if [ -z "$loginname" ]; then
    warn "빈 행 또는 사용자명 누락 - 건너뜀"
    continue
  fi

  info "👤 삭제 대상: ${bold}$loginname${normal} (${name})"

  if id "$loginname" &>/dev/null; then
    sudo userdel -r "$loginname" &>/dev/null
    if [ $? -eq 0 ]; then
      success "$loginname 계정 및 홈 디렉토리 삭제 완료"
    else
      error "$loginname 삭제 실패"
    fi
  else
    warn "$loginname 계정이 존재하지 않음"
  fi
done < "$input"

# ========== ✅ 완료 ==========
title "🏁 사용자 삭제 스크립트 종료"
echo
profile
포폴 및 이력서 : https://upbeat-suede-20b.notion.site/2265782662ce8071aeb7f67163e63467?source=copy_link

0개의 댓글