2011年9月19日 星期一

[Bash Script]如果Routing Table 出現兩筆 Default Gateway 怎麼辦?

    因為家裡的動物機群跟一般主機分屬於兩個不同網段同時分別透過兩台IP分享器連網,我在家時為了方便筆電會用有線連『動物機群網段』,同時用無線網卡連到『一般主機網段』。

    可是每次開機時因為同時有兩張網卡(有線+無線)所以就會得到兩個 『DefaultGateway』,有兩個『DefaultGateway』基本上就跟沒有『DefaultGateway』是一樣的,會無法連線,所以老是要手動刪掉『動物機群網段』的『DefaultGateway』,有點煩了所以寫隻簡單的Script讓他自動處理這個問題。

    想法很簡單~~~~

    1. 先檢查看看對接到『動物機群網段』的有線網卡『eth0』是不是『DefaultGateway』,如果是就刪掉。

    2. 接著再檢查對接到『一般主機網段』的無線網卡是不是『DefaultGateway』,如果是,那就....... 沒事~~~,如果不是就加上這個『DefaultGateway』。

    Scritp 如下,

#!/bin/bash 
#
# DefaultGatewayCheck.sh
# 自動設定我要的 Default Gateway
# Version:2.0
# 201109190237
# Max Lin max@mpsstudio.org
# 
 
#!/bin/bash
#
Checketh0=`route -n | grep "UG"| grep "eth0"`
Checkwlan0=`route -n | grep "UG"| grep "wlan0"`

if [ "$Checketh0" ] ; then

    echo '28825252' | sudo -S route del default gw 10.128.0.1                        
fi

if [ ! "$Checkwlan0" ] ; then

    echo '28825252' | sudo -S route add default gw 10.0.0.1

fi




































    測試:

1.檢視現有 Routing Table

max@minako:~$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
10.0.0.0        0.0.0.0         255.128.0.0     U     2      0        0 wlan0
10.128.0.0      0.0.0.0         255.128.0.0     U     1      0        0 eth0
0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 wlan0 
 
    沒有『動物機群網段』的『DefaultGateway』
 
2.加上『動物機群網段』的『DefaultGateway』到 Routing Table
 
max@minako:~$ sudo route add default gw 10.128.0.1 
 
3.確認一下
 
max@minako:~$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
10.0.0.0        0.0.0.0         255.128.0.0     U     2      0        0 wlan0
10.128.0.0      0.0.0.0         255.128.0.0     U     1      0        0 eth0
0.0.0.0         10.128.0.1      0.0.0.0         UG    0      0        0 eth0
0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 wlan0 
 
  
  『動物機群網段』的『DefaultGateway』在 Routing Table 中 
 
4.執行 Script
 
max@minako:~$ ./CheckGw.sh 
 
5.看一下Routing Table
 
max@minako:~$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
10.0.0.0        0.0.0.0         255.128.0.0     U     2      0        0 wlan0
10.128.0.0      0.0.0.0         255.128.0.0     U     1      0        0 eth0
0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 wlan0
 
 『動物機群網段』的『Default Gateway』沒了
 
6.刪掉『一般主機網段』的『Default Gateway』
max@minako:~$ sudo route del default gw 10.0.0.1
 
max@minako:~$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
10.0.0.0        0.0.0.0         255.128.0.0     U     2      0        0 wlan0
10.128.0.0      0.0.0.0         255.128.0.0     U     1      0        0 eth0
 
一筆『Default Gateway』都沒有
 
7.再跑一下Script 
 
max@minako:~$ ./CheckGw.sh 
max@minako:~$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
10.0.0.0        0.0.0.0         255.128.0.0     U     2      0        0 wlan0
10.128.0.0      0.0.0.0         255.128.0.0     U     1      0        0 eth0
0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 wlan0
 
 
嗯.....有效