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 
 выкладывайте. :)