Linux Shell脚本之自动修改IP

简介:

作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名、ip信息、网关等配置。修改成特定的主机名在维护和管理方面也比较方便。如下脚本用途为:修改ip和主机名等相关信息,可以根据实际需求修改,举一反三!

 
  1. #!/bin/sh  
  2. #auto Change ip netmask gateway scripts  
  3. #wugk 2012-12-17  
  4. cat << EOF  
  5. ++++++++自动修改ip和主机名等相关信息+++++++++ 
  6. ETHCONF=/etc/sysconfig/network-scripts/ifcfg-eth0  
  7. HOSTS=/etc/hosts  
  8. NETWORK=/etc/sysconfig/network  
  9. DIR=/data/backup/`date +%Y%m%d`  
  10. NETMASK=255.255.255.0  
  11. +++++++++-------------------------+++++++++++ 
  12. EOF   
  13. #Define Path  定义变量,可以根据实际情况修改 
  14.   
  15.   ETHCONF=/etc/sysconfig/network-scripts/ifcfg-eth0  
  16.   HOSTS=/etc/hosts  
  17.   NETWORK=/etc/sysconfig/network  
  18.   DIR=/data/backup/`date +%Y%m%d`  
  19.   NETMASK=255.255.255.0  
  20.   
  21. echo "================================================"    
  22. echo  
  23. #定义change_ip函数 
  24. function Change_ip ()  
  25. {   
  26. #判断备份目录是否存在,中括号前后都有空格,!叹号在shell表示相反的意思#  
  27. if  
  28.    [ ! -d $DIR ];then  
  29.   
  30.    mkdir -p $DIR  
  31.   
  32. fi  
  33.   
  34.   echo "Now Change ip address ,Doing Backup Interface eth0"  
  35.   cp $ETHCONF $DIR  
  36.   
  37.   grep "dhcp"  $ETHCONF  
  38. #如下$?用来判断上一次操作的状态,为0,表示上一次操作状态正确或者成功#    
  39. if  
  40.   
  41.   [ $? -eq 0 ];then  
  42. #read -p 交互输入变量IPADDR,注冒号后有空格,sed -i 修改配置文件# 
  43.   read -p "Please insert ip Address:" IPADDR  
  44.   sed -i 's/dhcp/static/g' $ETHCONF  
  45. #awk -F. 意思是以.号为分隔域,打印前三列# 
  46.   echo -e "IPADDR=$IPADDR\nNETMASK=$NETMASK\nGATEWAY=`echo $IPADDR|awk -F. '{print $1"."$2"."$3}'`.254" >>$ETHCONF  
  47.   echo "This IP address Change success !"  
  48.   
  49. else  
  50.     
  51.   echo -n  "This $ETHCONF is static exist ,please ensure Change Yes or NO":  
  52.   read i  
  53.   
  54. fi  
  55.   
  56. if    
  57.   [ "$i" == "y" -o "$i" == "yes" ];then  
  58.   read -p "Please insert ip Address:" IPADDR  
  59.   
  60.   count=(`echo $IPADDR|awk -F. '{print $1,$2,$3,$4}'`)   
  61.  #定义数组, ${#count[@]}代表获取变量值总个数# 
  62.   A=${#count[@]}  
  63.  #while条件语句判断,个数是否正确,不正确循环提示输入,也可以用[0-9]来判断ip# 
  64. while   
  65.   
  66.   [ "$A" -ne "4" ]  
  67.   
  68. do  
  69.   
  70.   read -p "Please re Inster ip Address,example 192.168.0.11 ip": IPADDR  
  71.   count=(`echo $IPADDR|awk -F. '{print $1,$2,$3,$4}'`)   
  72.   A=${#count[@]}  
  73.   
  74. done  
  75.  #sed -e 可以连续修改多个参数# 
  76.   sed -i -e 's/^IPADDR/#IPADDR/g' -e 's/^NETMASK/#NETMASK/g' -e 's/^GATEWAY/#GATEWAY/g' $ETHCONF 
  77. #echo -e \n为连续追加内容,并自动换行# 
  78.   echo -e "IPADDR=$IPADDR\nNETMASK=$NETMASK\nGATEWAY=`echo $IPADDR|awk -F. '{print $1"."$2"."$3}'`.254" >>$ETHCONF  
  79.   echo "This IP address Change success !"  
  80. else  
  81.   echo "This $ETHCONF static exist,please exit"  
  82.   exit $?  
  83.   
  84. fi  
  85.  
  86. }  
  87.  
  88. #定义hosts函数  
  89. ############function hosts##############  
  90. function Change_hosts ()  
  91. {  
  92.   
  93. if  
  94.   
  95.    [ ! -d $DIR ];then  
  96.    mkdir -p $DIR  
  97.   
  98. fi  
  99.   
  100.   cp $HOSTS $DIR  
  101.   read -p "Please insert ip address": IPADDR  
  102.   
  103.   host=`echo $IPADDR|sed 's/\./-/g'`  
  104.   cat $HOSTS |grep 127.0.0.1 |grep "$host"  
  105.      
  106. if  
  107.   [ $? -ne 0 ];then  
  108.   sed -i "s/127.0.0.1/127.0.0.1 $host/g" $HOSTS  
  109.   echo "This hosts change success "  
  110.   
  111. else  
  112.   echo "This $host IS Exist .........."  
  113.   
  114. fi  
  115.  
  116. }
  117.   
  118. ###########fuction network###############  
  119. #定义network函数  
  120. function Change_network ()   
  121. {  
  122.    if  
  123.   
  124.    [ ! -d $DIR ];then  
  125.    mkdir -p $DIR  
  126.   
  127.  fi  
  128.   cp $NETWORK $DIR  
  129.   read -p "Please insert ip address": IPADDR  
  130.   
  131.   host=`echo $IPADDR|sed 's/\./-/g'`  
  132.   grep "$host" $NETWORK  
  133.   
  134.    if  
  135.   [ $? -ne 0 ];then  
  136.   sed -i "s/^HOSTNAME/#HOSTNAME/g" $NETWORK  
  137.   echo "NETWORK=$host" >>$NETWORK  
  138.   
  139. else  
  140.   echo "This $host IS Exist .........."  
  141.   
  142.   fi  
  143.    
  144. }  
  145.  
  146. #PS3一般为菜单提示信息#  
  147.   PS3="Please Select ip or hosts Menu":  
  148. #select为菜单选择命令,格式为select $var in ..command.. do .... done    
  149.   select i in  "Change_ip" "Change_hosts" "Change_network"  
  150.  
  151. do  
  152. #case 方式,一般用于多种条件下的判断  
  153. case $i in   
  154. Change_ip )  
  155. Change_ip  
  156. ;;  
  157. Change_hosts )  
  158. Change_hosts  
  159. ;;  
  160. Change_network )  
  161. Change_network   
  162. ;;  
  163. *)  
  164. echo  
  165. echo "Please Insert $0: Change_ip(1)|Change_hosts(2)|Change_network(3)"  
  166. echo  
  167. ;;  
  168. esac  
  169.  
  170. done  

欢迎大家共同交流进步,分享更多的文章!知识在于分享,才会让我们更快的进步!


本文转自 wgkgood 51CTO博客,原文链接:http://blog.51cto.com/wgkgood/1092059


相关文章
|
30天前
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
2月前
|
存储 Shell Linux
Linux 如何更改默认 Shell
Linux 如何更改默认 Shell
60 0
Linux 如何更改默认 Shell
|
2月前
|
缓存 网络协议 Linux
Linux ip命令常用操作
Linux的 `ip`命令是一个强大且灵活的网络管理工具,能够执行从基本的网络接口配置到高级的路由和VLAN管理等多种操作。通过熟练掌握这些常用操作,用户可以更加高效地管理和配置Linux系统的网络环境。无论是在日常管理还是故障排除中,`ip`命令都是必不可少的工具。
43 2
|
3月前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
97 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
3月前
|
Web App开发 资源调度 网络协议
Linux系统之部署IP工具箱MyIP
【10月更文挑战第5天】使用Docker部署Radicale日历和联系人应用Linux系统之部署IP工具箱MyIP
157 1
Linux系统之部署IP工具箱MyIP
|
2月前
|
Ubuntu Linux Shell
Linux 系统中的代码类型或脚本类型内容
在 Linux 系统中,代码类型多样,包括 Shell 脚本、配置文件、网络配置、命令行工具和 Cron 定时任务。这些代码类型广泛应用于系统管理、自动化操作、网络配置和定期任务,掌握它们能显著提高系统管理和开发的效率。
|
3月前
|
监控 网络协议 Shell
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
74 6
|
2月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
3月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
118 1
|
4月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余