powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / perl скрипт соответствия ip и mac адресов
1 сообщений из 1, страница 1 из 1
perl скрипт соответствия ip и mac адресов
    #32699367
ush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ush
Гость
не хочет сцука работать. дожен брать из файлы ип и мак адреса, сравнивать с тем, что есть сейчас и блокировать тех пользователей, у которых мак и ип не совпадут с теми, что указаны в файле.
Ни разу не выполняется условие выделенное жирным.
вот собственно скрипт:

#!/usr/bin/perl

use POSIX qw(strftime);
$dtnow = strftime "%Y-%m-%e\t%H:%M:%S", localtime($^T);

%mac=();

open(FDAT,"<ipmac_open.dat");
foreach $s (<FDAT>)
{ chomp $s;
($di,$dm) = split /[\t\s]+/,$s;
$mac{$di} = uc($dm);
}
close(FDAT);

%bad = ();
open(FC,">ipmac_close.dat");
@arp = qx{arp -an};

foreach (@arp)
{ ($s1,$ui,$s2,$um,$s3,$s4,$s5,$s6) = split /\s\(\)+/, $_;
$um = uc($um);
if ((! exists $mac{ uc($ui) } )||(!($um eq $mac{uc($ui)})))
{ print FC "$ui\t$um\n";
$bad{$ui} = $um;
print "bad";
print "$ui\t$um\n";
}
}

print @bad;
close(FC);

system("ipfw -f 555 delete ;");
%cl=();
foreach $ui (keys %bad)
{ $s = qx(arping -c 1 $ui );
chomp $s;
($b1,$b2,$b3,$cm,$ci,$b6,$b7,$b8) = split /[\t\s\(\)]+/,$s;
$cm = uc($cm);
if ((exists $bad{uc($ci)})&&($cm eq $bad{uc($ui)})) { $cl{$ui} = $cm; }
else { print "$dtnow\topen addr\t$ui\t$cm\n"; }
}
$s='';
foreach $ui (keys %cl)
{ print "$dtnow\tclose addr\t$ui\t$cl{$ui}\n";
$s .= "ipfw 555 add deny ip from $ui to any ; \n";
$s .= "ipfw 555 add deny ip from any to $ui ; \n";
}
if (length($s) == 0) { print "$dtnow\tnothing found\n"; }
system($s);
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / perl скрипт соответствия ip и mac адресов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]