shell腳本獲取IP,MAC,GATEWAY等信息

shell腳本獲取IP,MAC,GATEWAY等信息


#!/bin/bash
# ------------------------------------------------------------
# Filename:    setnetwork.sh
# Revision:    0.0.1
# Date:        2014-05-01 22:32:50
# Author:      wanghui
# Email:       [email protected]
# Description: set ip,hostname,route
# Usage:       setnetwork.sh (function)
# -----------------------------------------------------------
#set -x
#獲取ip地址
get_ip(){
	ifconfig $1 | awk -F'[ :]+' '/inet\ addr/{print $4}'
}
#獲取子網掩碼
get_mask(){
	ifconfig $1 | awk -F: '/Mask/{print $NF}'
}
#獲取mac地址
get_mac(){
    ifconfig $1 | awk '/HWaddr/{print $NF}'
}
#獲取廣播地址
get_bcast(){
    ifconfig $1 | awk -F'[ :]+' '/Bcast/{print $6}'
}
#獲取網管地址
get_route(){
    route -n | awk '/UG/{print $2}'   
}


#設置主機名並寫入到配置文件中,設置kernel中的主機名立即生效
set_host(){
	CONF_NET="/etc/sysconfig/network"
	[[ -n $(grep ^HOSTNAME $CONF_NET) ]] && sed -i "s/\(HOSTNAME=\)\S*/\1$1/" $CONF_NET || echo "HOSTNAME=$1" >> $CONF_NET
    echo $1 > /proc/sys/kernel/hostname
}

#網管寫入到配置文件中
set_gateway(){	
	[[ $(grep ^GATEWAY $CONF_NET) ]] && sed -i "s/\(GATEWAY=\)\S*/\1$get_route/" $CONF_NET || echo "GATEWAY=$get_route" >> $CONF_NET
}


#配置網卡的ip信息並寫入到配置文件
set_ip(){
     IP_CONF="/etc/sysconfig/network-scripts/ifcfg-"
	 CONF_FILE=${IP_CONF}$1
     [ -e $CONF_FILE ] || touch $CONF_FILE
	 [[ -n $(grep ^DEVICE $CONF_FILE) ]] && sed  -i "s/\(DEVICE=\)\S*/\1$1/" $CONF_FILE || echo "DEVICE=$1" >> $CONF_FILE
     [[ -n $(grep ^IPADDR $CONF_FILE) ]] && sed  -i "s/\(IPADDR=\)\S*/\1$(get_ip $1)/" $CONF_FILE || echo  "IPADDR=$(get_ip $1)" >> $CONF_FILE
     [[ -n $(grep ^NETMASK $CONF_FILE) ]] && sed  -i "s/\(NETMASK=\)\S*/\1$(get_mask $1)/" $CONF_FILE || echo "NETMASK=$(get_mask $1)" >> $CONF_FILE
     [[ -n $(grep ^HWADDR $CONF_FILE) ]] && sed  -i "s/\(HWADDR=\)\S*/\1$(get_mac $1)/" $CONF_FILE || echo "HWADDR=$(get_mac $1)" >> $CONF_FILE
	 [[ -n $(grep ^ONBOOT $CONF_FILE) ]] && sed  -i 's/\(ONBOOT=\)\S*/\1yes/' $CONF_FILE || echo "ONBOOT=yes" >> $CONF_FILE 
	 [[ -n $(grep ^TYPE $CONF_FILE) ]] && sed  -i 's/\(TYPE=\)\S*/\1Ethernet/' $CONF_FILE || echo "TYPE=Ethernet" >> $CONF_FILE 
	 [[ -n $(grep ^BOOTPROTO $CONF_FILE) ]] && sed  -i 's/\(BOOTPROTO=\)\S*/\1static/' $CONF_FILE || echo "BOOTPROTO=static" >> $CONF_FILE 
}


set_host HOSTNAME
set_gateway eth0
set_ip eth0


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章