Скрипт Bash для ручных маршрутов и проблемы шлюза по умолчанию - PullRequest
0 голосов
/ 02 октября 2009

Так что на работе я использую соединение 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 Ответ

1 голос
/ 02 октября 2009

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" означает, что вам не нужно перенаправлять вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...