2009-08-22 3 views
2

Я не уверен, следует ли публиковать его здесь или в ServerFault. В любом случае, я пытаюсь работать с брандмауэром компании, чтобы подключиться к некоторым сайтам обмена мультимедиа, используя сеть 3g моего телефона. Я придумал простую команду ip route, которая принимает адрес inppp в качестве параметра. Но я хочу сделать это немного более автоматизированным, читая адрес inet прямо из сценария, а не передавая его через параметр командной строки.Как получить адрес inpppp из команды оболочки

Вот сценарий, чтобы сделать его более очевидным:

  • Команда вызова, как сейчас: $jumpfirewall xxx.xxx.xxx.xxx

  • Команда вызова Я хочу: $jumpfirewall

ли вам знаете какую-нибудь команду или библиотеку, которую я могу использовать для ее чтения из командной строки?

ответ

5

адаптировано из cyberciti:

/sbin/ifconfig ppp0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'

ifconfig ppp0 получите информацию для основного интерфейса PPP; grep разрезает его на строку, содержащую IP-адрес; cut разрывает все после inet addr: до bcast:, что-то наподобие 1.2.3.4 Bcast:; и вызов awk будет печатать только первое поле (разделенное пробелами), оставив вам только IP-адрес.

+0

whoa, безупречный! Спасибо! – ariefbayu

2

pppd автоматически вызывает сценарий в /etc/ppp/ip-up, когда ссылка восходит. В этом скрипте является локальным IP-адресом PPP-ссылки. (В некоторых дистрибутивах /etc/ppp/ip-up настроен на вызов сценариев в /etc/ppp/ip-up.d, с $PPP_LOCAL, установленным на IP-адрес, поэтому вы можете разместить там свой скрипт).

Таким образом, вам не придется вручную вызывать скрипт - просто поднимите ссылку PPP, и она будет запущена автоматически. Существует соответствующий /etc/ppp/ip-down, который вы можете использовать, чтобы отменить маршрут, когда ссылка идет вниз.

+0

Я использую скрипт, потому что я не использую туннель каждый раз, когда использую свою 3g-сеть. Во всяком случае, я проголосую за информацию – ariefbayu

Смежные вопросы