Forum Webscript.Ru
Программирование => Perl => Тема начата: Super от 11 Декабря 2005, 22:16:56
-
Есть скрипт запускается ЛОКАЛЬНО.
это только часть с которой проблема.
for ($i = 1; $i < 25; ++$i)
{
$ip="192.168.1.$i";
system "/usr/sbin/arp -n $ip \\n";
}
$provereno = $i-1;
print "\\n Проверено $provereno IP адресов \\n";
________________________________________
что выводт
192.168.1.1 (192.168.1.1) -- no entry
? (192.168.1.2) at 00:00:20:00:09:63 on rl0 static
? (192.168.1.3) at 00:80:48:2c:08:36 on rl0
? (192.168.1.4) at 00:12:79:bb:0d:91 on rl0
Требуется записать в переменую допустим
$mac - макадрес и нечего более.
Заранее благодарен.
-
http://search.cpan.org/~crazydj/Net-ARP-0.6/ARP.pm
Может это лучше чем system?
-
Да, если уж совсем не втерпеж использовать системный вызов - поэкспериментируйте с обратными кавычками
my $arp = `/usr/sbin/arp -n $ip `;
Вернет все содержимое arp
P.S.: \\n Зачем в system использовать?
-
Огромное спасибо Skif\'у за то что направил в нужное русло. И в результате полноценый скрипт.
#!/usr/bin/perl
for ($i = 1; $i < 10; ++$i)
{
$ip="10.0.0.$i";
my $arp = `/usr/sbin/arp -n $ip `;
if ($arp =~ /(\\w+:\\w+:\\w+:\\w+:\\w+:\\w+)/)
{
print "$1\\n";
}
}
$provereno = $i-1;
print "\\nПроверено $provereno IP адресов \\n";
-
А теперь ещё вопросик.
Не могли бы дать пример работы Perl\'a с Postgresql\'ем.
Неткажусь даже и от ссылки.
Заранее благодарен.
-
1. arp -a | awk \'$2 ~ /\\(10\\.0\\.0\\.([1-9]|10)\\)/ { print $4; }\'
2. perldoc DBI; perldoc DBD::Pg
-
arto Огромное спасибо но Я остановлюсь пока что на своём варианте. :) (так как есть у нас люди туго шарящие в нем и лишнее их нажатие не туда гразит катастрофе :) ) а мне лично твой вариант больше понравился. (может где нибудь применю)
Суть скрипта:
1. пинговать сеть (пинг по одному разу) на каждый IP адрес
2. Запуск arp и перенос от туда MAC адрес в базу Postgresql
3. Сравнение MAC и IP в базе с MAC\'ом и IP явным если не сошлось то записать его в базу как не извесного.
4. Сгенерировать случайным образом MAC и вставить его в arp таблицу.
из этого всего есть 1-й и 2-й пункт. вот потихоньку делаем.
и требуется гибкость и понятность скрипта.
-
бродкаст пинг никак?
-
Есть 2-а отдельных скрипта с бродкастом есть и по каждой машине.
вот счас тестирую какой лучше спровляется и бостоверную инфу даёт и нечего ли Я не теряю если есть бродкаст.
-
подскажите как в Perl\'eь можно выполнит эту команду
(DBD::Pg) - нету
sh -c "echo \\"INSERT INTO ip_mac (time ,ip ,mac) VALUES (\'now\', $ip, $1);\\" | psql CETb _postgresql"
-
perldoc -f open
-
Если кому интиресно могу выложить скрипт.
-
Super
выкладывайте. :)