Centos7 一键改IP_最终版(脚本实战)

2023-11-01 17:20

本文主要是介绍Centos7 一键改IP_最终版(脚本实战),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

案例要求:

1、支持动、静态IP修改
2、支持IP检测
3、支持IP冲突检查
4、IP回滚

内容

#!/bin/bash
#auto alter IP 
#by author toyix
#202071510:26:39
########################
netdir=/etc/sysconfig/network-scripts
INTERFACES=`ls /sys/class/net/ |grep -v '^lo'`#定义函数-选择网卡
CHOOSE_INTERFACE (){
PS3="请根据上面提示,输入数字,选择对应的网卡:  "
select INTERFACE in ${INTERFACES}
dobreak
done
}#定义输入IP的函数,如果不正确会要求重新输入
IPADDR_YES_NO (){#输入IPread -p "请输入新IP地址:" IP_ADDR#检查IP是否输入正确,不对则重新输入echo ${IP_ADDR}|grep -Ew "^[1-2][0-9]{1,2}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$">/dev/nullwhile [ $? -ne 0 ]doread -p "IP输入不正确,请重新输入:" IP_ADDRecho ${IP_ADDR}|grep -Ew "^[1-2][0-9]{1,2}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$">/dev/nulldone}if [ $UID -eq 0 ];then
echo ---------------------------------------------- 
elseecho "请用root用户执行本脚本,谢谢"exit 1
fi#调用函数-选择网卡
CHOOSE_INTERFACE#调用函数-输入IP
IPADDR_YES_NOecho -e "\033[33m 检测IP是否正确及冲突.... \033[0m"
ping -c 2 ${IP_ADDR}|grep "time=">/dev/null
while [ $? -eq 0 ]
doecho -e "\033[33m IP冲突,请重新输入新的IP地址 \033[0m"IPADDR_YES_NOecho -e "\033[33m 检测IP是否正确及冲突.... \033[0m"ping -c 2 ${IP_ADDR}|grep "time=">/dev/null
doneread -p "请输入子网掩码:" IP_NETMASK#检查子网掩码是否输入正确,不正确则重新输入
echo ${IP_NETMASK}|grep -Ew "^[1-2][0-9]{1,2}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null
while [ $? -ne 0 ]
doread -p "子网掩码输入不正确,请重新输入:" IP_NETMASKecho ${IP_NETMASK}|grep -Ew "^[1-2][0-9]{1,2}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$">/dev/nulldoneread -p "请输入网关地址:" IP_GATEWAY#检查网关是否输入正确,不正确则重新输入
echo ${IP_GATEWAY}|grep -Ew "^[1-2][0-9]{1,2}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null
while [ $? -ne 0 ]
doread -p "网关输入不正确,请重新输入:" IP_GATEWAYecho ${IP_GATEWAY}|grep -Ew "^[1-2][0-9]{1,2}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$">/dev/nulldone#备份网卡文件
\cp ${netdir}/ifcfg-${INTERFACE}{,`date +%Y%m%d`.bak}cat>${netdir}/ifcfg-${INTERFACE}<<EOF
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=${IP_ADDR}
NETMASK=${IP_NETMASK}
GATEWAY=${IP_GATEWAY}
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
ONBOOT=yes
EOF#备份DNS文件
cp /etc/resolv.conf{,.bak}#重启服务
echo -e "\033[32m 重启网络服务中,请使用新IP重新连接,如更改后无法上网,30秒内IP回滚!! \033[0m"
systemctl restart network.service#改回DNS文件
\cp /etc/resolv.conf.bak /etc/resolv.conf#测试网络
echo -e "\033[32m 测试网络是否正常 \033[0m"
ping -c 3 www.baidu.comif [ $? -eq 0 ];thenecho -e "\033[32m IP更改成功,网络正常 \033[0m"
else#网络不通,则恢复之前状态echo -e "\033[33m 无法上网,IP回滚。。。。 \033[0m"\mv ${netdir}/ifcfg-${INTERFACE}`date +%Y%m%d`.bak ${netdir}/ifcfg-${INTERFACE}systemctl restart network.service\cp /etc/resolv.conf.bak /etc/resolv.confping -c 5 www.baidu.comif [ $? -ne 0 ];thenecho -e "\033[33m 回滚失败,请检查 \033[0m"elseecho -e "\033[32m 回滚成功,网络正常!! \033[0m"fi
fi

执行结果

更改成功

在这里插入图片描述

更改失败-回滚

在这里插入图片描述

------------------end

这篇关于Centos7 一键改IP_最终版(脚本实战)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/324563

相关文章

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

SpringBoot实现基于URL和IP的访问频率限制

《SpringBoot实现基于URL和IP的访问频率限制》在现代Web应用中,接口被恶意刷新或暴力请求是一种常见的攻击手段,为了保护系统资源,需要对接口的访问频率进行限制,下面我们就来看看如何使用... 目录1. 引言2. 项目依赖3. 配置 Redis4. 创建拦截器5. 注册拦截器6. 创建控制器8.

Linux限制ip访问的解决方案

《Linux限制ip访问的解决方案》为了修复安全扫描中发现的漏洞,我们需要对某些服务设置访问限制,具体来说,就是要确保只有指定的内部IP地址能够访问这些服务,所以本文给大家介绍了Linux限制ip访问... 目录背景:解决方案:使用Firewalld防火墙规则验证方法深度了解防火墙逻辑应用场景与扩展背景:

如何使用 Bash 脚本中的time命令来统计命令执行时间(中英双语)

《如何使用Bash脚本中的time命令来统计命令执行时间(中英双语)》本文介绍了如何在Bash脚本中使用`time`命令来测量命令执行时间,包括`real`、`user`和`sys`三个时间指标,... 使用 Bash 脚本中的 time 命令来统计命令执行时间在日常的开发和运维过程中,性能监控和优化是不

bat脚本启动git bash窗口,并执行命令方式

《bat脚本启动gitbash窗口,并执行命令方式》本文介绍了如何在Windows服务器上使用cmd启动jar包时出现乱码的问题,并提供了解决方法——使用GitBash窗口启动并设置编码,通过编写s... 目录一、简介二、使用说明2.1 start.BAT脚本2.2 参数说明2.3 效果总结一、简介某些情

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/