A-A+

一个路由启动脚本的范例

2015年11月21日 站长资讯 暂无评论

下面是一个路由器启动的脚本,并不复杂所以没附加说明了。

  1. #!/bin/bash  
  2. HOST=http://169.254.169.254  
  3. COUNT=0  
  4. for DEV in `/sbin/ifconfig | grep -i "d0:.d" | grep "eth[0-9]* " | awk '{print $1}'`;do  
  5.     TABLE=$((${DEV:3}+100))  
  6.     IP="`/sbin/ifconfig "$DEV" | grep "inet " | awk '{print $2}' | awk -F":" '{print $2}'`"  
  7.     NETWORK_MASK=`ip route | grep -w "$DEV  proto"|awk '{print substr($1,1,length($1))}'`  
  8.     NETWORK=`ip route | grep -w "$DEV  proto"|awk '{print substr($1,1,length($1)-3)}'`  
  9.     GATEWAY=${NETWORK%.*}.$(expr ${NETWORK##*.} + 1)  
  10.     if [ -z $IP ]||[ -z $GATEWAY ];then  
  11.         continue  
  12.     fi  
  13.     ip route flush table $TABLE  
  14.     ip route add default via $GATEWAY dev $DEV src $IP table $TABLE prio 50  
  15.     ip route add $NETWORK_MASK dev $DEV src $IP table $TABLE prio 50   
  16.     ip rule add from $IP table $TABLE  
  17.     COUNT=$(($COUNT+1))  
  18. done  
  19.    
  20. if [ $COUNT -lt "2" ];then  
  21.     exit  
  22. fi  
  23. for DEV in `/sbin/ifconfig | grep -i " d0:.d" | grep "eth[0-9]* " | awk '{print $1}'`;do  
  24.     NETWORK=`ip route | grep -w "$DEV  proto"|awk '{print substr($1,1,length($1)-3)}'`  
  25.     GATEWAY=${NETWORK%.*}.$(expr ${NETWORK##*.} + 1)  
  26.     TABLE=$((${DEV:3}+100))  
  27.     HW=`/sbin/ifconfig "$DEV"|tr '[A-Z]' '[a-z]' | sed -n "/ d0:.d/s/.*hwaddr *//p" | sed -n 's/:/_/gp'`  
  28.     FILENAME="${HW:0:6}route.txt"  
  29.     FILEPATH="/tmp/$FILENAME"  
  30.     wget $HOST/latest/meta-data/"$FILENAME" -q -O "$FILEPATH"; UNREACHEABLE=$?  
  31.     while [ $UNREACHEABLE -ne "0" ]  
  32.   
  33.   
  34.         do wget $HOST/latest/meta-data/"$FILENAME" -q -O "$FILEPATH"; UNREACHEABLE=$?; sleep 5;  
  35.     done  
  36.     while read line;do  
  37.         if [ -z $line ];then  
  38.             continue  
  39.         fi  
  40.         route add -net $line gw $GATEWAY  
  41.    done < "$FILEPATH"  
  42. done  
标签:

给我留言