#!/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. 防抖(debounce)和 节流(throttling)

    防抖(debounce)和 节流(throttling) 1.防抖和节流出现的原因 防抖和节流是针对响应跟不上触发频率这类问题的两种解决方案. 在给DOM绑定事件时,有些事件我们是无法控制触发频率的. ...

  2. fastfdfs上传代码

    //上传到FDFS //获取后缀名 String extension = StringUtils.substringAfterLast(file.getOriginalFilename()," ...

  3. python中PIL模块

    Image模块 Image模块是在Python PIL图像处理中常见的模块,对图像进行基础操作的功能基本都包含于此模块内.如open.save.conver.show-等功能. open类 Image ...

  4. [2018-06-28] 创建第一个django项目

    1.创建一个名称为tmpl的项目 django-admin.py startproject tmpl 2.进入刚刚创建的tmpl目录 cd tmpl 3.创建一个名称为learn的应用 python ...

  5. vue2-preview引用时报错解决办法

    1.报错信息 在完全按照官方文档安装引入vue2-preview时出现报错,报错信息如下: 从图中标记处可以知道出错是因为在\node_modules\_vue2-preview@1.0.2@vue2 ...

  6. 爬虫之request库主要解析---参照慕课北理工嵩天

    kv = {'key1':'value1','key2':'value2'} r = requests.request (' GET' , 'http://python123.io/ws' , par ...

  7. 开源跳板机(堡垒机)系统 Jumpserver安装教程(带图文)

    环境 系统: CentOS 7 IP: 192.168.244.144 关闭 selinux 和防火墙 # CentOS 7 $ setenforce 0 # 可以设置配置文件永久关闭 $ syste ...

  8. C语言程序设计100例之(8):尼科彻斯定理

    例8    尼科彻斯定理 题目描述 尼科彻斯定理可以叙述为:任何一个整数的立方都可以表示成一串连续的奇数的和.需要注意的是,这些奇数一定是连续的,如:1,3,5,7,9,…. 例如,对于整数5,5*5 ...

  9. Java nio 空轮询bug到底是什么

    编者注:Java nio 空轮询bug也就是Java nio在Linux系统下的epoll空轮询问题. epoll机制是Linux下一种高效的IO复用方式,相较于select和poll机制来说.其高效 ...

  10. Go组件学习——Web框架Gin

    以前学Java的时候,和Spring全家桶打好关系就行了,从Spring.Spring MVC到SpringBoot,一脉相承. 对于一个Web项目,使用Spring MVC,就可以基于MVC的思想开 ...