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

相关文章

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

使用Python实现一键隐藏屏幕并锁定输入

《使用Python实现一键隐藏屏幕并锁定输入》本文主要介绍了使用Python编写一个一键隐藏屏幕并锁定输入的黑科技程序,能够在指定热键触发后立即遮挡屏幕,并禁止一切键盘鼠标输入,这样就再也不用担心自己... 目录1. 概述2. 功能亮点3.代码实现4.使用方法5. 展示效果6. 代码优化与拓展7. 总结1.

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Pandas使用SQLite3实战

《Pandas使用SQLite3实战》本文主要介绍了Pandas使用SQLite3实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1 环境准备2 从 SQLite3VlfrWQzgt 读取数据到 DataFrame基础用法:读