#!/bin/bash
#2019.7. :
#This author is DKS
#auto modify ip of linux
###############################
IP_NAME="ifcfg-ens33"
IP_DIR="/etc/sysconfig/network-scripts/" TEMP=$(mktemp -t test.XXXXXX)
TEMP1=$(mktemp -t test1.XXXXXX)
TEMP2=$(mktemp -t test2.XXXXXX)
#
cd $IP_DIR
if [ ! -d ip_back ];then
mkdir ip_back
fi
#获取备份编号
judge_var(){
VAR=`find ${IP_DIR}ip_back/ -type f -name "ifcfg-ens33*"|awk -F\. '{print $2}'|sort |sed -n '$p'|grep -oE "[0-9]{0,3}"`
if [ $VAR -ge ];then
VAR=$(expr $VAR + )
else
VAR=
fi
IP_BACK="${IP_DIR}ip_back/ifcfg-ens33.back$VAR"
ip_back_name="ifcfg-ens33.back$VAR"
}
#
#ip地址备份
ip_back(){
judge_var
cp $IP_NAME $IP_BACK
dialog --title "备份为" --msgbox "$ip_back_name"
}
#
#ip地址状态判断
test_ip_status(){
STATUS=`sed -n '/BOOTPROTO/p' ${IP_NAME}|awk -F\= '{print $2}'`
dialog --title "当前状态" --msgbox "${STATUS}"
while [ ]
do
dialog --inputbox "修改状态为dhcp或static" >$TEMP1
if [ $? -eq ];then
BREAK=
break
fi
status=`cat $TEMP1`
if [[ $status == static ]];then
local temp="static"
BREAK=
break
elif [[ $status == dhcp ]];then
local temp="dhcp"
BREAK=
break
else
dialog --msgbox "输入错误"
fi
done
if [ $BREAK -eq ];then
dialog --yesno "您的输入为:\n$temp "
if [ $? -eq ];then
ip_back
sed -i "s/BOOTPROTO=${STATUS}/BOOTPROTO=${temp}/g" $IP_NAME
dialog --title "修改后状态" --msgbox "$(cat $IP_NAME)"
elif [ $? -eq ];then
dialog --msgbox "已取消修改"
fi
fi
}
#
#ip地址修改
cat_modify_ip(){
cat >> ${IP_NAME} <<eof
IPADDR="$1"
NETMASK="255.255.255.0"
GATEWAY="192.168.2.1"
DNS1="114.114.114.114"
eof
}
modify_ip(){
STATUS=`sed -n '/BOOTPROTO/p' ${IP_NAME}|awk -F\= '{print $2}'`
dialog --title "当前状态" --msgbox "\n $STATUS"
if [[ $STATUS == static ]];then
while [ ]
do
dialog --title "请输入IP:" --inputbox "例:192.168.2.XXX" >$TEMP2
if [ $? -eq ];then
break
fi
ip=$(cat $TEMP2)
judge_ip=`echo $ip |grep -E "\<([0-9]{1,3}\.){3}([0-9]{1,3})\>"`
if [[ $ip == $judge_ip ]];then
local txt=
dialog --title "您的输入为:" --msgbox "\n$ip"
else
local txt=
fi
if [ $txt -eq ];then
if [ -z `sed -n "/IPADDR/p" $IP_NAME` ];then
ip_back
cat_modify_ip $ip
dialog --title "已修改为" --msgbox "$(cat $IP_NAME)"
break
else
ip_back
old_ip=`sed -n '/IPADDR/p' $IP_NAME | awk -F\= '{print $2}'`
sed -i "s/IPADDR=${old_ip}/IPADDR=${ip}/g" $IP_NAME
dialog --title "已修改为" --msgbox "$(cat $IP_NAME)"
break
fi
elif [ $txt -eq ];then
dialog --msgbox "输入错误"
fi
done
elif [[ $STATUS == dchp ]];then
break
fi
}
#
#ip地址回滚
rool_back(){
judge_var
VAR=$(expr $VAR - )
if [ $VAR le ];then
VAR=
fi
#获取备份
IP_BACK="${IP_DIR}ip_back/ifcfg-ens33.back$VAR"
ip_back_name="ifcfg-ens33.back$VAR" mv $IP_BACK $IP_NAME
VAR=$[ $VAR - ] dialog --title "回滚备份" --msgbox "$ip_back_name"
dialog --title "IP已回改为" --msgbox "$(cat $IP_NAME)"
}
##
#重启网卡
restart_network(){
dialog --title "是否重启当前网络配置" --yesno "$(cat $IP_NAME)"
if [ $? -eq ];then
service network restart &>/dev/null
if [ $? -eq ];then
dialog --msgbox "重启成功"
else
dialog --msgbox "重启失败"
fi
elif [ $? -eq ];then
dialog --msgbox "已取消操作"
fi
}
##
##程序实现
while [ ]
do
dialog --menu "自动修改服务器IP脚本" "检测IP状态并修改" "修改IP地址" "IP地址回滚" "重启网卡" "退出" >$TEMP
if [ $? -eq ];then
break
fi
selection=$(cat $TEMP)
case $selection in
)
test_ip_status
;;
)
modify_ip
;;
)
rool_back
;;
)
restart_network
;;
)
break
;;
*)
dialog --msgbox "输入错误"
esac
done
rm -r $TEMP > /dev/null
rm -r $TEMP1 > /dev/null
rm -r $TEMP2 > /dev/null

auto_modify_ip Shell脚本安装的更多相关文章

  1. shell脚本安装python、pip--这种写法是错误的---每一个命令执行完都要判断是否执行成功,否则无法进行下一步

    shell脚本安装python.pip--不需要选择安装项目--不管用总报错,必须带上判断符号,while没有这种用法,写在这里为了以后少走弯路,所以不要用下面的执行了 首先把pip-.tgz 安装包 ...

  2. Linuxqq shell脚本安装后的卸载

    官方下载和帮助页面: 传送门 linuxqq_2.0.0-b1 的时候,并没有发布 MIPS64 的 DEB 包,只能用 .sh 安装,需要手动删除卸载.愚人节发布的 beta2 新增了 MIPS64 ...

  3. zabbix通过shell脚本安装异常问题定位

    htxk-106主机信息现象如下: 通过zabbix_get命令 zabbix_get [7189]: Check access restrictions in Zabbix agent config ...

  4. Docker学习3-简单shell脚本安装mysql5.7与docker小技巧

    前言 玩过Windows中的 .bat 的小伙伴是不是觉得很有意思呢,github中一键推送.同步拉取等等操作,哈哈,当然shell脚本也是很类似,可以运行一个脚本就可以自动给我们部署好环境啦!但是这 ...

  5. shell 脚本安装Tomcat和java

    脚本安装Tomcat和java#!/bin/bash##SCRIPT:install_jdk-8u181-linux-x64_apache-tomcat-8.0.53#AUTHOR:Shinyinfo ...

  6. shell脚本安装部署反向代理 监控进程 计划任务

    1.编写脚本自动部署反向代理.web.nfs: 要求: I.部署nginx反向代理三个web服务,调度算法使用加权轮询: 反向代理服务器脚本配置脚本 #!/bin/bash #安装eple和nginx ...

  7. shell脚本安装python、pip--交互式的

    首先把pip-.tgz 安装包放在 /usr/local 下面,按照顺序先安装pip,再安装python.不要先安装或只安装python,否则很容易出错, [root@bogon ~]# cat pi ...

  8. 用shell脚本安装apache

    我们首先创建一个文件为test.sh,执行此文件的方法有以下四种方式: 1../test.sh(必须chmod赋予执行权限) 2.. test.sh 3.sourse test.sh 4.[shell ...

  9. shell脚本安装jdk

    #!/bin/bash BASE_SERVER=192.168.1.11 yum install -y wget wget $BASE_SERVER/soft-all/jdk-7u45-linux-x ...

随机推荐

  1. data-*设置自定义属性注意事项一

    本人才疏学浅,偶遇一个data自定义属性应当注意的小问题,随笔记下. 1.看下面代码:首先在a标签设置自定义两个属性 <a class="btn" href="ja ...

  2. 文件 File

    文件 1. 文件的一些常用方法 package com.ljw.study; import java.io.File; import java.util.Arrays; import java.uti ...

  3. [ZJOI2006]碗的叠放

    Description 小H有n个碗需要放进橱柜,她希望将他们叠起来放置.你知道每个碗都是规则的圆柱体,并且都是上宽下窄,你已经测量出了每个碗的两个半径及高,请你帮小H找出一种叠放顺序,使得叠放出来的 ...

  4. [考试反思]0918csp-s模拟测试46:残存

    我... 行吧大概说说. T1打的n2dp,什么随机化什么改变读入顺序都能AC. 没想优化.打了个链表优化dp.不知为何WA了. T2读错题,死了. T3的50分暴力没来得及优化感觉思路很神仙(然而并 ...

  5. [考试反思]0817NOIP模拟测试24:冲淡

    一切都还好吗? 是啊,还好. 前两名仍然被外校包揽/ B哥140撑住场面,120/110/100不等.我90分混吃等死排了个大并列第10. 考前说要考凸包,打开了几个博客慢慢看一直到考试开始. 然而我 ...

  6. 最新JetBrains PyCharm 使用教程--下载安装Python库(五)

    最新JetBrains PyCharm 下载安装Python库 ​

  7. PHP经典算法题

    1.百钱买百鸡 公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱. 分析:估计现在小学生都能手工推 ...

  8. [LC]530题 二叉搜索树的最小绝对差

    ①题目 给定一个所有节点为非负值的二叉搜索树,求树中任意两节点的差的绝对值的最小值. 示例 : 输入: 1   \   3  / 2 输出:1 解释:最小绝对差为1,其中 2 和 1 的差的绝对值为 ...

  9. spring源码1

    1.beans核心类 1.DefaultListableBeanFactory xmlBeanFactory xmlBeanFactory继承自DefaultListableBeanFactory,D ...

  10. 开始逆向objc基础准备(二)我的平台是simulator-x86_64

    建项目运行中断调试,lldb中显示寄存器看到有rax-r15, stm0-stm7, xmm0-xmm15, ymm0-ymm15,即为x64体系支持sse4. 再在lldb中查看寄存器别名得到以下对 ...