| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > пинг целой подсети |
| Автор: fedottt 17.1.2010, 22:24 | ||
| наваял вот такое... сделано для пингования вагона ip (порядка 6к) скрипт должен брать из базы и туда же скидывать результат пинга. необходимо для мониторинга. на данный момент лучшего решения с использованием БД Mysql не придумал (( короче говоря, у меня этот костыль отрабатывает первые 400 хостов как положено, а потом где-то зацикливается и поедает всю память на сервере. сьел 10 гиг и уложил систему. можете глянуть, где я допустил ошибку? чуствую что метод написания скриптов а-ля php в перле не канает.. должен был делать такое: взял в базе 400 ip, на них склепал 400 нитей, выполнил, взял следующие 400, нити и так далее.. но где-то затык(
|
| Автор: mvsgt 18.1.2010, 02:25 |
| Ошибка в подходе. Пинговать надо с помощью nmap, а для мониторинга использовать специальные программы. Скрипт сначала следовало бы сократить раза в 2 за счёт использования File::Slurp для записи в файлы, потом use strict; добавить, а без него искать ошибки - себя не уважать, уж извините. PS C потоками Вы как-то вольно работаете, с переменными как будто они общие. Замыкания чуть-чуть исправляют ситуацию, но глюков это только прибавляет. И вообще такое ощущение, что программа не на перле написана. use strict обязательно добавляйте, сразу поёмёте что написали какую-то жуть. |
| Автор: DurRandir 18.1.2010, 06:41 |
| Не используйте потоки. Потоки в перл - зло. Посмотрите на AnyEvent::FastPing, и вообще event-driven подход как полную замену потокам при работе с сетью. PS: у вас, конечно, странный код, но это пройдёт |
| Автор: krypt3r 18.1.2010, 06:47 | ||||
+1, зачем вЕлики клепать
Про use strict из перл-кодеров вообще единицы знают |
| Автор: amg 18.1.2010, 07:02 |
| К старым версиям Net::Ping прилагалась программа fping - pings multiple hosts at once Ее можно найти на CPAN и пользоваться (или взять из нее распаралеливающий код). |
| Автор: fedottt 18.1.2010, 16:46 |
| nmap решил вопрос))) спасибо вам) код у меня такой кривой, бо привык в php. perl пока не дается. |