用于手动路由和默认网关问题的Bash脚本

时间:2009-10-02 10:47:01

标签: bash scripting

所以在工作中我使用vpn连接,之后我必须手动设置我的路由表以便一切正常,我正在尝试编写一个bash脚本,它可以轻松区分我的家庭连接和我的工作连接并设置正确的网关:

#!/bin/bash

# Does the ppp0 interface exist?
cat /proc/net/dev | grep ppp0 > /dev/null
ppp_check=$?

if [ $ppp_check -ne 0 ]; then
        # I'm at home and you should set the ppp0 gateway
        ip r c default via $(ifconfig ppp0 | awk -F "P-t-P:" '{print $2}' | awk -F " " '{print $1}' | tr "\n" " " | awk '{$1=$1};1')
else
        # I'm at work so you should set my work gateway
        ip r c default via 1.1.1.1
fi

ip r a 2.2.2.2/24 dev tun0
.
.
.
ip r a 10.10.10.10/24 dev tun0

问题是脚本总是执行设置家庭网关的代码,即使我在工作,也应该跳过第一个IF语句。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果grep与模式匹配,则返回0,因此您需要测试$ ppp-check -eq 0。

您可以稍微简化测试:

if grep -q ppp0 /proc/net/dev ; then
    # I'm at home
else
    # I'm at work
fi

“grep -q”表示您不需要重定向输出。