本脚本主要是用于实现centos 6/7 配置ip的shell脚本
命令行配置:
bash 脚本名称 ip 网卡名称
注:
脚本名称:shell代码写入的脚本命名
ip :要配置的ip信息
网卡名称:要配置的网卡名称
#!/bin/bash
#init
host_ip=""
mask="255.255.0.0" #默认16位掩码
gateway=""
dev=""
# 判断ip是否合法
CheckIPAddr(){
echo $1|grep "^[0-9]\{1,3\}\.\([0-9]\{1,3\}\.\)\{2\}[0-9]\{1,3\}$" > /dev/null;
#IP地址必须为全数字
if [ $? -ne 0 ];then
echo "这个IP不合法,请输入正确的IP:"
exit 1
fi
ipaddr=$1
net_bit1=`echo $ipaddr|awk -F . '{print $1}'` #以"."分隔,取出每个列的值
net_bit2=`echo $ipaddr|awk -F . '{print $2}'`
net_bit3=`echo $ipaddr|awk -F . '{print $3}'`
net_bit4=`echo $ipaddr|awk -F . '{print $4}'`
for num in $net_bit1 $net_bit2 $net_bit3 $net_bit4
do
if [ $num -gt 255 ] || [ $num -lt 0 ];then #每个数值必须在0-255之间
echo "这个IP不合法,请输入正确的IP:"
exit 1
fi
done
}
# 判断网卡是否存在
CheckDev(){
ip a |grep $1 &> /dev/null
if [ $? -eq 0 ];then
Dev=`ip a |grep $1 |awk -F '[: ]' '{print $3}'`
Num=`ip a |grep $1 |wc -l`
if [ $1 != $Dev ] || [ $Num -gt 3 ];then
echo "这个设备不准确,请输入正确的设备名:"
exit 1
fi
else
echo "这个设备不准确,请输入正确的设备名:"
exit 1
fi
}
grep -i 'CentOS' /etc/redhat-release &> /dev/null
if [ $? -eq 0 ];then
if [ "$1" == "" ] || [ "$2" == "" ];then
echo 'USAGE: Command <host_ip> [dev]
dev: '${def_dev}''
exit 1
fi
host_ip=$1
CheckIPAddr $host_ip
dev=$2
CheckDev $dev
net_bit1=`echo ${host_ip} | awk -F'.' '{print $1}'`
net_bit2=`echo ${host_ip} | awk -F'.' '{print $2}'`
net_bit4=`echo ${host_ip} | awk -F'.' '{print $4}'`
if [ ${net_bit1} -ge 0 ] && [ ${net_bit1} -le 127 ];then
gateway="${net_bit1}.${net_bit2}.255.254"
elif [ ${net_bit1} -ge 128 ] && [ ${net_bit1} -le 191 ];then
gateway="${net_bit1}.${net_bit2}.255.254"
elif [ ${net_bit1} -ge 192 ] && [ ${net_bit1} -le 223 ];then
gateway="${net_bit1}.${net_bit2}.255.254"
else
echo "IP is not TRUE!!!"
fi
ifdown $dev
echo "DEVICE=$dev
TYPE=Ethernet
BOOTPROTO=static
IPADDR=${host_ip}
NETMASK=${mask}
GATEWAY=${gateway}
ONBOOT=yes
USERCTL=no
" >/etc/sysconfig/network-scripts/ifcfg-${dev}
service network restart
ip a
else
echo 'system error!'
exit 1
fi