Hi,All.
Есть система Linux Debian.
Вывод команды route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
X66.bbn00 * 255.255.255.255 UH 0 0 0 ppp0
172.16.48.0 * 255.255.255.240 U 0 0 0 eth3
192.168.3.0 * 255.255.255.0 U 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth2
default X66.bbn00 0.0.0.0 UG 0 0 0 ppp0Нужно с помощью скрипта perl определить имя интерфейса, через который в определенный момент времени идут пакеты по умолчанию, в данном случае это ppp0.
Может быть другой интерфейс. Необходимо для переключения между каналами.
В инете нашел, но код не работает. Скрипт должен вернуть имя активного интерфейса, т.е. того у которого в таблице маршрутизации есть default.
Вот часть кода
# Определение работающего канала
my $activeiface='not';
open(A,"route|");
while () {
next if (!($_ =~ m/default\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+(\S+)/));
$activeiface=$1;
};
close(A);
Получаем ошибку
Use of uninitialized value $_ in pattern match (m//) at ./inet line 41.
Я понимаю что где-то ошибка, но в перле не силен.
Дай-те пож-та работоспособный код, или подправьте что есть.
Буду очень признателен.