티스토리 뷰

CS

rm -rf로 인한 사고 방지 스크립트

맥모닝프로 2024. 1. 9. 13:54

운영을 하다보니 rm 명령어로 인하여 크고 작은 사고를 경험했다... 보고하기에도 참... 민망한 사고지만 쉽게 일어날 수 있는 문제이기 때문에 삭제 명령어 사용시 사고 방지를 위한 스크립트를 정리하였다.

 

해당 스크립트는 'rm' 명령어 사용시 해당 서버의 hostname 정보를 사용자가 입력해야만 수행할 수 있는 스크립트이다.

 

Shell Script

#!/bin/bash
 
# 사용자로부터 hostname 입력 받기
read -p "Enter hostname to confirm: " user_hostname
 
# 현재 시스템의 hostname 가져오기
current_hostname=$(hostname)
 
# 입력 받은 hostname과 현재 시스템의 hostname이 일치하는지 확인
if [ "$user_hostname" == "$current_hostname" ]; then
    echo "Hostname confirmed. Proceeding with rm command."
    rm "$@"
else
    echo "Hostname does not match. Aborting rm command."
    exit 1
fi

 

Python

#!/usr/bin/env python3
import os
import socket
 
# 사용자로부터 hostname 입력 받기
user_hostname = input("Enter hostname to confirm: ")
 
# 현재 시스템의 hostname 가져오기
current_hostname = socket.gethostname()
 
# 입력 받은 hostname과 현재 시스템의 hostname이 일치하는지 확인
if user_hostname == current_hostname:
    print("Hostname confirmed. Proceeding with rm command.")
    # rm 명령어 실행
    os.system("rm {}".format(" ".join(os.sys.argv[1:])))
else:
    print("Hostname does not match. Aborting rm command.")

 

alias 설정

  • .zshrc나 .bashrc안에 아래 내용 추가
  • 터미널을 사용할 때마다 해당 alias 적용
  • rm 명령어 사용시 스크립트로 대체
alias rm='/{confirm_rm.sh path}/confirm_rm.sh -i'

 

적용 후 예시

[root@server-hostname ~] # rm test_file
Enter hostname to confirm: Incorrect-hostname # 잘못된 Host Name 입력
Hostname does not match. Aborting rm command.

[root@server-hostname ~] # rm test_file
Enter hostname to confirm: Correct-hostname # Host Name 정상 입력
Hostname confirmed. Proceeding with rm command.
remove test_file? y

 

'CS' 카테고리의 다른 글

대용량 Heap Memory 분석 방법 (feat.MAT)  (1) 2024.01.21
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함