Engineering/Redhat Linux

[Redhat Linux] Shell script - IP 변경

mutjang2 2025. 2. 21. 15:00
#!/bin/bash                                                                                                                                                                                     

IP_PATH=/etc/sysconfig/network-scripts
IFCFG_FILE=$IP_PATH/ifcfg-eth0
BACKUP_DIR=/home/backup
HOST_FILE=/etc/hosts
CURRENT_IP=$(ifconfig eth0 | grep "inet" |awk '{print $1}')

## IP 입력 받기
echo ""
echo "Please input your IP that you want to change(Current IP = ${CURRENT_IP}"

read IPADDR

echo ""
echo -n "Are you sure you want to change your IP address?(y/n)  "

## 작업 진행 여부
read RESPOND

## 결과값이 y||Y 라면 작업 진행
if [[ $RESPOND = y || $RESPOND = Y ]]; then

echo ""
echo "TASK START"


## 기존 파일 backup 
echo "backup files under /home/backup"
  if [[ -e $BACKUP_DIR ]]; then
    cp -aR $IFCFG_FILE $BACKUP_DIR/ifcfg_backup
    cp -aR $HOST_FILE $BACKUP_DIR/hosts_backup

  else
  mkdir $BACKUP_DIR
  sleep 1
    cp -aR $HOST_FILE $BACKUP_DIR/hosts_backup
    cp -aR $IFCFG_FILE $BACKUP_DIR/ifcfg_backup
  fi

## /etc/hosts 파일 수정
echo "Edit hosts file"
sed -i -e "s/$CURRENT_IP/$IPADDR/g" "$HOST_FILE"
  if [[ $? -eq 0 ]]; then
    echo "SUCCESS"
  else
    echo "ERROR"
    exit 1
  fi

## ifcfg 파일 수정
echo "Edit ifcfg file"
sed -i -e "s/$CURRENT_IP/$IPADDR/g" "$IFCFG_FILE"
  if [[ $? -eq 0 ]]; then
    echo "SUCCESS"
  else
    echo "ERROR"
    exit 1
  fi

systemctl restart network
sleep 3

echo "Your IP address has been changed to ${IPADDR}"
exit 0

## n||N이라면 종료
elif [[ $RESPOND = n || $RESPOND = N ]]; then
    echo "Quit the task"
    exit 0
## y나 n이 아닌 값을 입력했을때 종료
else
    echo "Please type 'y' or 'n'"
    exit 0
fi