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 ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.