Простой скрипт чтения базы данных pppd

Форум для размещения материалов по реализации различных схем использования ПО, решению частых проблем и предупреждению частых ошибок
Закрыто
Аватара пользователя
marvin
Сообщения: 77
Зарегистрирован: Сб мар 24, 2007 11:18
Откуда: Нижняя Тура

Простой скрипт чтения базы данных pppd

Сообщение marvin »

Представляю вашему вниманию простой скрипт для поиска в базе данных формата TDB, используемой в ppp 2.x
Для него требуется утилита tdb-dump из пакета http://sf.net/projects/tdb/, rpm которого без проблем находится через http://rpm.pbone.net/ для любой платформы.
#!/usr/bin/perl

if (@ARGV[0] eq "") { print "Usage: vpn-print <ppp_num> or vpn-print <username> or with any other attribute\n"; exit; }

@pppdb=`tdb-dump /var/run/pppd2.tdb | grep PEERNAME | grep "=@ARGV[0];" | awk {'print \$3'}`;

foreach $record (@pppdb) {

foreach $param ( split(/;/, $record) ) { if ($param =~ m/^([^#].+?)=(.*)$/) { $$1 = $2; } }
print "PEERNAME=$PEERNAME IFNAME=$IFNAME PID=$PPPD_PID\n";

}
Метод предельно прост, позволяет по любому атрибуту конкретного сеанса найти все остальные. Например по имени интерфейса найти его pid и переданный радиусом логин юзера.
# vpn-print ppp10
PEERNAME=marvin IFNAME=ppp10 PID=16610
Также, следующий простой скрипт позволяет восстановить набор pid-файлов в /var/run для всех ppp-сеансов (время от времени некоторые pid-файлы имеют свойство "теряться" ;) ):
#!/usr/bin/perl

@pppdb=`tdb-dump /var/run/pppd2.tdb | grep PEERNAME | awk {'print \$3'}`;

foreach $record (@pppdb) {

foreach $param ( split(/;/, $record) ) { if ($param =~ m/^([^#].+?)=(.*)$/) {$$1 = $2;} }
`echo "$PPPD_PID" > /var/run/$IFNAME.pid`;

}
Последний раз редактировалось marvin Сб янв 10, 2009 02:22, всего редактировалось 1 раз.

SOLDIER
Сообщения: 649
Зарегистрирован: Чт мар 16, 2006 18:07

Сообщение SOLDIER »

Спасибо! Полезная наработочка! После праздников попробую! С наступившими Вас! :D

SOLDIER
Сообщения: 649
Зарегистрирован: Чт мар 16, 2006 18:07

Сообщение SOLDIER »

На всякий случай уточнение. В Gentoo указанная утилитка входит в состав dev-libs/tdb и называется tdbdump (без дефиса).

pazke
Сообщения: 2
Зарегистрирован: Чт янв 08, 2009 17:42
Откуда: Ростов-на-Дону

Сообщение pazke »

В debian пакет tdb-tools, утилита как и в gentoo называется tdbdump.

Закрыто