А где этот интерфейс в конфиге?
rl3
Скрип приводить смысла не вижу(не в обиду), его размер 26 килобайт, на нем довольно сложная статистика расчитывается, завязано на скульную БД. Писал его на коленке быстрее-быстрее. Так что теперь чем его разбирать, проще заново написать
основные моменты приведу:
снимаем дамп с ipcad:
Код: Выделить всё
system "/usr/bin/rsh localhost cle ip acco > /usr/BILLING/trash.txt";
system "/usr/bin/rsh localhost sh ip acco checkpoint > /usr/BILLING/point.txt";
разбираем дамп и набиваем массивы, тут вам парсилка такая навороченная не пригодится :
Код: Выделить всё
$line = "";
open (P, "/usr/BILLING/point.txt");
while ($line = <P>) {
if ($line =~ /\./) {
($tr, $fromaddr, $toaddr, $tr, $bytes) = split (/\s+/, $line);
if (($fromaddr =~ /^10./) & ($toaddr =~ /^10./)) { goto gonext }
if (($fromaddr =~ /^255./) or ($toaddr =~ /.255$/)) { goto gonext }
if ($fromaddr =~ /^10.0/) {
$upload{$fromaddr} = $upload{$fromaddr} + $bytes;
$upsum = $upsum + $bytes;
}
if ($toaddr =~ /^10.0/) {
$download{$toaddr} = $download{$toaddr} + $bytes;
$downsum = $downsum + $bytes;
}
#print "$fromaddr - $toaddr - $bytes\n";
}
gonext:
}
close (P);
ну и создаем то, что вносит изменения в пайпы:
Код: Выделить всё
$pushline11 = "/sbin/ipfw pipe 11 config mask dst-ip 0x000000ff bw ".$down_now."Kbit/s delay -100ms";
$pushline12 = "/sbin/ipfw pipe 12 config mask src-ip 0x000000ff bw ".$up_now."Kbit/s delay -100ms";
$upsum = int($upsum);
$downsum = int($downsum);
open (A, ">/usr/BILLING/PIPE.sh");
print A "#!/bin/sh\n\n";
print A "$pushline11\n";
print A "$pushline12\n";
print A "\n";
print A "#### \t BASE \t REAL \t CLIENT\n";
print A "#\n";
print A "# UP \t $uband \t $upsum \t $u($uuser) --> $up_now\n";
print A "# DOWN \t $dband \t $downsum \t $d($duser) --> $down_now\n";
print A "# ";
close (A);
system ("/usr/BILLING/PIPE.sh");
Повторяю: просто вариант, много лишнего, много некрасивого, но что-то использовать можно
