Linux/Python学习论坛-京峰教育

 找回密码
 立即注册

一键登录:

搜索
热搜: 活动 交友 discuz
查看: 1559|回复: 1

Linux运维shell编程-自动修改网卡ip地址

[复制链接]

217

主题

331

帖子

4711

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4711
QQ
发表于 2015-3-14 01:01:38 | 显示全部楼层 |阅读模式

作为一名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. #定义hosts函数  
  87. ############function hosts##############  
  88. function Change_hosts ()  
  89. {  
  90.   
  91. if  
  92.   
  93.    [ ! -d $DIR ];then  
  94.    mkdir -p $DIR  
  95.   
  96. fi  
  97.   
  98.   cp $HOSTS $DIR  
  99.   read -p "Please insert ip address": IPADDR  
  100.   
  101.   host=`echo $IPADDR|sed 's/\./-/g'`  
  102.   cat $HOSTS |grep 127.0.0.1 |grep "$host"  
  103.      
  104. if  
  105.   [ $? -ne 0 ];then  
  106.   sed -i "s/127.0.0.1/127.0.0.1 $host/g" $HOSTS  
  107.   echo "This hosts change success "  
  108.   
  109. else  
  110.   echo "This $host IS Exist .........."  
  111.   
  112. fi  
  113. }
  114.   
  115. ###########fuction network###############  
  116. #定义network函数  
  117. function Change_network ()   
  118. {  
  119.    if  
  120.   
  121.    [ ! -d $DIR ];then  
  122.    mkdir -p $DIR  
  123.   
  124. fi  
  125.   cp $NETWORK $DIR  
  126.   read -p "Please insert ip address": IPADDR  
  127.   
  128.   host=`echo $IPADDR|sed 's/\./-/g'`  
  129.   grep "$host" $NETWORK  
  130.   
  131.    if  
  132.   [ $? -ne 0 ];then  
  133.   sed -i "s/^HOSTNAME/#HOSTNAME/g" $NETWORK  
  134.   echo "NETWORK=$host" >>$NETWORK  
  135.   
  136. else  
  137.   echo "This $host IS Exist .........."  
  138.   
  139.   fi  
  140.    
  141. }  
  142. #PS3一般为菜单提示信息#  
  143.   PS3="Please Select ip or hosts Menu":  
  144. #select为菜单选择命令,格式为select $var in ..command.. do .... done   
  145.   select i in  "Change_ip" "Change_hosts" "Change_network"  
  146. do  
  147. #case 方式,一般用于多种条件下的判断  
  148. case $i in   
  149.      Change_ip )  
  150.      Change_ip  
  151. ;;  
  152.      Change_hosts )  
  153.      Change_hosts  
  154. ;;  
  155.      Change_network )  
  156.      Change_network   
  157. ;;  
  158.      *)  
  159.      echo  
  160.      echo "Please Insert $0: Change_ip(1)|Change_hosts(2)|Change_network(3)"  
  161.      echo  
  162. ;;  
  163. esac  
  164. done
复制代码

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

京峰Linux教育创始人之一,只为有梦想的人!任何事情只要去行动,就会收获结果!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|京峰教育,只为有梦想的人 ( 京ICP备15013173号 )

GMT+8, 2019-11-14 01:19 , Processed in 0.023935 second(s), 12 queries , Redis On.

快速回复 返回顶部 返回列表