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

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

★★★

Ответ на: комментарий от Envel

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

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

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

dimon555 ★★★★★
()

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

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

lodin ★★★★
()
Ответ на: комментарий от lodin

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

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

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

lodin ★★★★
()
Ответ на: комментарий от lodin

Спасибо. На perl помогло, сделал скрипт.

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