LINUX.ORG.RU

Вывести интерфейс по заданному адресу


0

0

Имеется куча туннелей вида tunXXX, за каждым из которых стоит pppd и присвоен адрес (вида 10.х.х.х)
ifconfig выводит все туннели сразу, у каждого из них pid pppd-процесса, если активен. Бывает случается проблема и на сервере соединение "виснет", то есть активно, а у клиента уже давно разорвано и нужно убить соответствующий pppd на сервере. Я знаю клиента, знаю его адрес 10.х.х.х, как мне заставить ifconfig вывести информацию по тому туннелю, которому соответствует этот адрес, чтобы каждый раз не мучиться и не просматривать "вручную"? Инфа выводится вот так:

tun127: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1496
inet 10.0.0.1 --> 10.0.1.141 netmask 0xffffffff
Opened by PID 37600
tun128: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1496
inet 10.0.0.1 --> 10.0.1.38 netmask 0xffffffff
Opened by PID 37602
tun129: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1494
inet 10.0.0.1 --> 10.0.1.237 netmask 0xffffffff
Opened by PID 37811

(то есть переносы строк есть).

★★★

Ответ на: Re: Вывести интерфейс по заданному адресу от Envel

Re: Вывести интерфейс по заданному адресу

man ip небось не поможет

поэтому наверное man pppd там какие-нибудь persist и прочие опции

можно ещё наверняка парсить вывод ifconfig

dimon555 ★★★★★ ()

Re: Вывести интерфейс по заданному адресу

Сорт в конце для наглядности (чтобы оно сначала прочло инпут, а потом уже что-то печатало).

awk 'BEGIN{ RS="tun" }; { print $1 " " $8}' | sort

lodin ★★★★ ()
Ответ на: Re: Вывести интерфейс по заданному адресу от lodin

Re: Вывести интерфейс по заданному адресу

Ой. Хотя я не уверен, что это не гнутый АВК.

Если это не работает на негнутых системах, можно и с перлом извратиться:

perl -pe 's/\n/ /g; s/tun/\ntun/g;' | awk '{ print $1 " " $8}'

lodin ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.