#!/bin/bash
|
|
# 系统网络配置文件
|
NETWORK_CONFIG_FILE="/etc/network/interfaces"
|
LOG_FILE="/opt/vasystem/script/netconfig.log"
|
ES_SERVICE_UPDATE="/opt/vasystem/script/updateAllIp.sh"
|
|
# basic系统服务关闭脚本
|
SERVICE_STOP_CMD=""
|
# basic系统服务启动脚本
|
SERVICE_START_CMD=""
|
|
INTERFACE="$1"
|
IPADDR="$2"
|
NETMASK="$3"
|
GATEWAY="$4"
|
DNSSERVER="$5"
|
|
Usage(){
|
cat <<EOF
|
$0 : missing operand
|
Usage:
|
$0 <ifname> <ipaddr> <netmask> <gateway> [dns-server]
|
EOF
|
exit 1
|
}
|
|
n_log() {
|
v_time=$(date "+%Y-%m-%d %H:%M:%S")
|
echo "$v_time $*" >>$LOG_FILE
|
}
|
|
write_interfaces()
|
{
|
echo "auto lo
|
iface lo inet loopback
|
|
auto $INTERFACE
|
iface $INTERFACE inet static
|
address $IPADDR
|
netmask $NETMASK
|
gateway $GATEWAY
|
dns-nameserver $DNSSERVER
|
" > $NETWORK_CONFIG_FILE
|
|
ret=$?
|
n_log "write_interfaces. ret: $ret"
|
|
return $ret
|
}
|
|
validate_ip()
|
{
|
if [[ $1 =~ ^([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$ ]]; then
|
return 0
|
fi
|
|
return 1
|
}
|
|
network_restart()
|
{
|
# 重启网络
|
/etc/init.d/networking restart
|
ip addr flush dev $INTERFACE
|
ifdown $INTERFACE
|
ifup $INTERFACE
|
|
n_log "network restart."
|
|
sleep 3
|
}
|
|
service_restart()
|
{
|
# 重启ES weedfs 服务
|
[ -f "$ES_SERVICE_UPDATE" ] && {
|
su - basic -c "sh ES_SERVICE_UPDATE &"
|
}
|
|
n_log "service restart." >>$LOG_FILE
|
|
# 重启basic服务
|
su - basic -c "sh /opt/startAllServices.sh &"
|
}
|
|
# Start Execution
|
|
n_log "Start NetConfig Execution, CMD: $*"
|
# 校验参数个数
|
if [ $# -lt 4 ]; then
|
Usage
|
fi
|
|
# 验证接口是否存在
|
ifconfig | grep -q $INTERFACE || exit 1
|
|
# 校验IP合法性
|
i=0
|
while [ $# -ne 0 ]
|
do
|
if [ $i -gt 0 -a $i -lt 4 ]; then
|
validate_ip $1 || exit 1
|
fi
|
shift
|
let i+=1
|
done
|
|
if [ "$DNSSERVER" == "" ]; then
|
DNSSERVER=$GATEWAY
|
fi
|
|
# 配置接口
|
write_interfaces || {
|
echo -n "write interfaces failure"
|
exit 1
|
}
|
|
# 重启网络
|
network_restart
|
|
# 重启相关服务, 不更改ip的情况下, 重启网络即可
|
localip=$(/sbin/ifconfig $INTERFACE | grep inet | grep -v inet6 | awk '{printf $2}' | tr -d "addr:")
|
if [ "$localip" = "$IPADDR" ]; then
|
service_restart
|
fi
|
|
exit 0
|