Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2323132
  • 博文数量: 535
  • 博客积分: 8689
  • 博客等级: 中将
  • 技术积分: 7066
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-26 10:00
文章分类

全部博文(535)

文章存档

2024年(4)

2023年(4)

2022年(16)

2014年(90)

2013年(76)

2012年(125)

2011年(184)

2010年(37)

分类: LINUX

2011-10-10 22:16:05



shell脚本自动修改linux下ifcfg-ethx文件

说明:此脚本作用

1)当发现网卡为dhcp模式时,修改为static模式,并添加IP等信息;

2)修改网卡IP为指定的IP

#!/bin/bash

FILE_PATH1=/etc/sysconfig/network-scripts/ifcfg-eth0
FILE_PATH2=/etc/sysconfig/network-scripts/ifcfg-eth1

#the last ipaddr netmask gateway for ifcfg-eth0
IP_MODI1=192.168.X.X

MASK_MODI1=255.255.255.0
GATEWAY_MODI1=""

#the last ipaddr netmask gateway for ifcfg-eth1
IP_MODI2=192.168.Y.Y

MASK_MODI2=255.255.255.0
GATEWAY_MODI2=""

change_dhcp()
{
 #edit eth0
 sed -i 's/dhcp/static/g' $FILE_PATH1 #change 'dhcp' to 'static'
 echo IPADDR=$IP_MODI1>> $FILE_PATH1
 echo NETMASK=$MASK_MODI1>> $FILE_PATH1
 echo GATEWAY=$GATEWAY_MODI1>> $FILE_PATH1
 #edit eth1
 sed -i 's/dhcp/static/g' $FILE_PATH2 #change 'dhcp' to 'static'
 echo IPADDR=$IP_MODI2>> $FILE_PATH2
 echo NETMASK=$MASK_MODI2>> $FILE_PATH2
 echo GATEWAY=$GATEWAY_MODI2>> $FILE_PATH2
}

change_static()
{
 #get primal ip from eth0
 IP_PRIMAL1=`grep -i ipaddr $FILE_PATH1|awk -F "=" '{printf $2 }'`
 #get primal netmask from eth0
 MASK_PRIMAL1=`grep -i netmask $FILE_PATH1|awk -F "=" '{printf $2}'`
 #get primal gateway from eth0
 GATEWAY_PRIMAL1=`grep -i gateway $FILE_PATH1|awk -F "=" '{printf $2}'`

 #get primal ip from eth1
 IP_PRIMAL2=`grep -i ipaddr $FILE_PATH2|awk -F "=" '{printf $2 }'`
 #get primal netmask from eth1
 MASK_PRIMAL2=`grep -i netmask $FILE_PATH2|awk -F "=" '{printf $2}'`
 #get primal gateway from eth1
 GATEWAY_PRIMAL2=`grep -i gateway $FILE_PATH2|awk -F "=" '{printf $2}'`

 #update ipaddr netmask and save ifcfg-eth0.bak file
# sed -e "s/$IP_PRIMAL1/$IP_MODI1/g" -e "s/$MASK_PRIMAL1/$MASK_MODI1/g" -e "s/$GATEWAY_PRIMAL1/$GATEWAY_MODI1/g" $FILE_PATH1>ifcfg-eth0.bak
 sed -i -e "s/$IP_PRIMAL1/$IP_MODI1/g" $FILE_PATH1
 sed -i -e "s/$MASK_PRIMAL1/$MASK_MODI1/g" $FILE_PATH1
 sed -i -e "s/$GATEWAY_PRIMAL1/$GATEWAY_MODI1/g" $FILE_PATH1
 
 sed -i -e "s/$IP_PRIMAL2/$IP_MODI2/g" $FILE_PATH2
 sed -i -e "s/$MASK_PRIMAL2/$MASK_MODI2/g" $FILE_PATH2
 sed -i -e "s/$GATEWAY_PRIMAL2/$GATEWAY_MODI2/g" $FILE_PATH2

 
 #update ipaddr netmaskand save ifcfg-eth1.bak file
# sed -e "s/$IP_PRIMAL2/$IP_MODI2/g" -e "s/$MASK_PRIMAL2/$MASK_MODI2/g" -e "s/$GATEWAY_PRIMAL2/$GATEWAY_MODI2/g" $FILE_PATH2>ifcfg-eth1.bak

 #update ifcfg-eth0 and ifcfg-eth1 file
# \cp ifcfg-eth0.bak $FILE_PATH1
# \cp ifcfg-eth1.bak $FILE_PATH2
}

change_run()
{
 service network restart
 #show network card information
 cat $FILE_PATH1
 cat $FILE_PATH2
}

#get bootproto
boot_model1=`grep -i bootproto $FILE_PATH1|awk -F "=" '{printf $2 }'`
boot_model2=`grep -i bootproto $FILE_PATH2|awk -F "=" '{printf $2 }'`

if [[ $boot_model1 = "dhcp" ]] && [[ $boot_model2 = "dhcp" ]];then
 change_dhcp
 change_run
elif [[ $boot_model1 = "static" ]] && [[ $boot_model2 = "static" ]];then
 change_static
 change_run
else
 echo "please check the bootproto!"
fi

阅读(1142) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~