#!/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. FPGA时序约束理解记录

    最近整理了一下时序约束的内容,顺便发出来分享记录一下. 任何硬件想要工作正常,均需满足建立和保持时间,至于这个概念不再陈述. 下面将重点介绍两个概念:建立余量和保持余量.FPGA内部进行时序分析无非就 ...

  2. [Hadoop]Hive-1.2.x安装配置+Mysql安装

    HIve的元数据存储在mysql中,需要配置与MySQL建立连接,除了安装MySQL外还要安装连接的jar包:mysql-connector-java-5.1.47.tar.gz   安装环境:Cen ...

  3. 【TCP/IP网络编程】:03地址族与数据序列

    上一篇文章介绍了套接字的创建过程,这篇文章主要讨论分配给套接字的IP地址和端口号的相关知识. IP地址和端口号 IP(Internet Protocol,网络协议)地址是收发网络数据而分配给计算机的值 ...

  4. CSPS_108

    二逼出题人写错T1题面&&写伪T3std祭

  5. 使用Typescript重构axios(四)——实现基础功能:处理post请求参数

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  6. [转载]1.3 UiPath变量的介绍和使用

    一.变量 变量主要用于存储数据,它在RPA中扮演重要的数据传递角色,是RPA编程不可或缺的一部分.它包括变量名称和变量的值,变量的值支持多种数据类型,包括从通用值,文本,数字,数据表,时间和日期,Ui ...

  7. day5-列表专区

    list 列表.类li = [1, 12, 9, "age", ["88", ["19", 10], "方法"], &q ...

  8. docker搭建本地registry

    第一步:拉取registry镜像 [root@localhost iso]# docker image pull registry Using default tag: latest latest: ...

  9. [UWP]使用Win2D的BorderEffect实现图片的平铺功能

    1. WPF有,而UWP没有的图片平铺功能 在WPF中只要将ImageSource的TileMode属性设置为Tile即可实现图片的平铺,具体可见WPF的这些文档: ImageBrush 类 (Sys ...

  10. C++图像加Lidar点云转写rosbag

    近期需要处理一批Lidar+image的数据,拿到的是其他格式,但要转存成rosbag使用,参考部分网上做法,完成并记录. 1.Lidar处理 主要是将Lidar点云信息按点转为pcl::PointX ...