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