- #!/bin/bash
- #Auto modify ip and hostname
- IP_CONFIG='/etc/sysconfig/network-scripts/ifcfg-eth0'
- HOSTNAME_CONFIG='/etc/sysconfig/network'
- HOSTS_CONFIG='/etc/hosts'
- # 定义一个 IP 主要内容数组
- a=0 #定义变量 a 为数组的下标, 动态使用的时候调用 IP_ARRAY[a]
- IP_ARRAY=(
- IPADDR
- NETMASK
- GATEWAY
- )
- # 判断 IP 是否符合标准规则
- function judge_ip(){
- # 这里 local $1 出错, 用 2>/dev/null 屏蔽掉错误, 暂未发现影响输出结果
- local $1 2>/dev/null
- TMP_TXT=/tmp/iptmp.txt
- echo $1> ${TMP_TXT}
- IP_ADDR=grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' ${TMP_TXT}
- # 判断有没有符合... 规则的 IP
- if [ ! -z "${IP_ADDR}" ];then
- local j=0;
- # 通过循环来检测每个点之前的数值是否符合要求
- for ((i=1;i<=4;i++))
- do
- local IP_NUM=echo "${IP_ADDR}" |awk -F. "{print $"$i"}"
- # 判断 IP_NUM 是否在 0 与 255 之间
- if [ "${IP_NUM}" -ge 0 -a "${IP_NUM}" -le 255 ];then
- ((j++));
- else
- return 1
- fi
- done
- # 通过 j 的值来确定是否继续匹配规则, 循环四次, 若都正确 j=4.
- if [ "$j" -eq 4 ];then
- # 确认是否为自己想要输入的 IP 地址
- rm -rf ${TMP_TXT}
- return 0
- fi
- else
- return 1
- fi
- }
- # 取得正确的 IP 值
- # 通过调用函数 judge_ip, 变量 IP_ADDR 的最终值就是正确的
- function read_right_IP(){
- read -p "请输入 ${IP_ARRAY[a]} 的值:" IP_ADDRS
- IP_ADDRS=""judge_ip"${IP_ADDRS}";
- i=`echo $?`
- # 循环直到输入正确的 IP 为止
- until [ "$i" -eq 0 ];do
- echo -e "\033[31m\n 你输入了错误的 ${IP_ARRAY[a]} 值:${IP_ADDRS} ====>>>>\033[0m"
- read -p "重新输入 ${IP_ARRAY[a]}, 请输入:" IP_ADDRS
- judge_ip "${IP_ADDRS}";
- i=`echo $?`
- done
- }
- # 判断网卡配置文件, 存在就备份, 不存在则新建一个空白文件
- function chang_ip(){
- if [ -f ${IP_CONFIG} ];then
- cat ${IP_CONFIG}
- cp ${IP_CONFIG} ${IP_CONFIG}.bak
- echo -e "\033[32m 下面将修改 IP...\033[0m"
- rm -rf ${IP_CONFIG} && touch ${IP_CONFIG};
- # 把部分基本信息导入到网卡配置文件内
- cat>${IP_CONFIG} <<EOF
- DEVICE=eth0
- TYPE=Ethernet
- ONBOOT=yes
- BOOTPROTO=static
- EOF
- ##########################################
- # 循环五次, 共调用函数五次, 分别获取需要设置的所有数据
- for ((a=0;a<=2;a++))
- do
- read_right_IP;
- echo -e "\033[32m\n${IP_ARRAY[a]}=${IP_ADDRS}\033[0m"
- # 把内容追加到网卡配置文件的最后
- echo -e "${IP_ARRAY[a]}=${IP_ADDRS}">> ${IP_CONFIG}
- done
- echo -e "\033[32m\n+++++++ 设置的 IP 相关信息如下 +++++++\033[1m"
- cat ${IP_CONFIG};
- echo -e "\033[32m\n++++++++++++++++++++++++++++++++++\033[0m"
- else
- echo -e "\033[31m 网卡配置文件:${IP_CONFIG} 不存在, 请检查系统是否被破坏...\033[0m"
- fi
- }
- ##########################################
- chang_ip
- if [ "$?" -eq 0 ];then
- echo -e "\033[32m 修改 IP success ...\033[0m"
- echo -e "\033[32m 删除 70-persistent-cd.rules 文件...\033[0m"
- rm -f /etc/udev/rules.d/70-persistent-cd.rules
- echo -e "\033[32m 重启 service network restart 网卡...\033[0m"
- service network restart
- ping -c 3 10.1.2.254
- echo -e "\033[32m history -C ...\033[0m"
- history -c
- echo -e "\033[32m clean /var/log/messages ...\033[0m"
- echo "">/root/.bash_history
- echo "">/var/log/messages
- echo -e "\033[32m delete change_ip.sh \033[0m"
- rm -f /root/change_ip.sh
- else
- echo -e "\033[31m 失败! 请检查 IP 配置文件...\033[0m"
- fi
来源: http://www.bubuko.com/infodetail-2983644.html