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