From: Gennadij Pastuhov 2:5036/26 13 Mar 2020 12:35 +0200
To: Eugene Grosbein grosbein.net
Subject: Net::DNS vs. dig
Рад всех приветствовать! А особенно - Eugene! Пятница марта 13 20 03:22 Eugene Grosbein писал к Gennadij Pastuhov: GP>> Огромное спасибо! А как кошерно сравнить индентичность записей? GP>> Hапример, есть запись: '20 mx03.nicmail.ru.' GP>> И с другого сервера: '20 mx03.nicmail.ru.' GP>> Cплитить по \s и сравнивать массивы? Или есть некая общая GP>> каноничная форма? GP>> В Net::DNS::RR не нашёл функции сравнения. EG> А с чего ты взял, что Net::DNS возвращает результат в таком текстовом EG> виде? Я его через $rr->rdstring получаю. EG> Ты вообще читал perldoc Net::DNS? Да. EG> Там даже примеры есть. Про сравнение ничего не нашёл... :( ... Jonny wanna live
From: Eugene Grosbein grosbein.net 13 Mar 2020 03:22 +0200
To: Gennadij Pastuhov 2:5036/26
Subject: Net::DNS vs. dig
12 марта 2020, четверг, в 19:30 NOVT, Gennadij Pastuhov написал(а): GP> Огромное спасибо! А как кошерно сравнить индентичность записей? GP> Hапример, есть запись: '20 mx03.nicmail.ru.' GP> И с другого сервера: '20 mx03.nicmail.ru.' GP> Cплитить по \s и сравнивать массивы? Или есть некая общая каноничная форма? GP> В Net::DNS::RR не нашёл функции сравнения. А с чего ты взял, что Net::DNS возвращает результат в таком текстовом виде? Ты вообще читал perldoc Net::DNS? Там даже примеры есть. Eugene
From: Eugene Grosbein grosbein.net 12 Mar 2020 23:09 +0200
To: Gennadij Pastuhov 2:5036/26
Subject: Net::DNS vs. dig
11 марта 2020, среда, в 13:17 NOVT, Gennadij Pastuhov написал(а): GP> Требуется делать запросы к различным DNS серверам и сравнивать полученные GP> ответы. Hасколько хорошо работает Net::DNS? Хорошо. GP> Или лучше парсить вывод dig? Этого нужно избегать всеми средствами. Во-первых, это медленно, а во-вторых, вывод разный для разных версий dig. А ещё dig может вообще не быть в системе, это чать пакета bind, который нынче часто заменяют на другие (drill etc.) GP> есть ещё инструменты? Полно инструментов и других тоже. Hапример, модули AnyEvent и AnyEvent::DNS полезны, когда нужно выполнять огромное количество запросов и тогда очень желательно делать это асинхронно, то есть запулить в сеть сразу пачку запросов - штук 100 или 200 - не ожидая ответа на каждый, а потом сидеть и ждать, когда начнут приходить ответы и по приходе каждого ответа посылать в сеть новый запрос, либо посылать новый запрос по истечение таймаута на один из ранее отправленных старых. Таким образом при помощи Async::DNS мой скрипт ресолвит порядка 12900 имён со скоростью около 1230 запросов в секунду и тратит на всё это меньше двух минут суммарно, при том что часть запросов обламывается по таймауту, но это не страшно, так как они не тормозят других. И так как DNS-запросы это пакеты UDP, для которых обычное дело теряться в сети, то можно и нужно делать повторы для таких запросов. Большая часть запросов укладывается в двухсекундный таймаут, некоторые серверы-тормоза отвечают медленней и для них делается переповтор с таймаутом в 6 секунд, а потом третий повтор с таймаутом в 12 секунд - бывают и настолько тормозные, хотя их и очень мало. Для достижения такой скорости делаю 200 изначальных запросов и поддерживаю такое количество запросов "в полёте" по мере прихода результатов. Всё это делается без распараллеливания по ядрам CPU и загрузка одного ядра CPU в моём случае получается в пике 90%, в среднем 80%. Тут важно не перегрузить CPU, чтобы он успевал обрабатывать пришедшие ответы, а иначе они могут переполнить входной буфер и потеряться. Eugene
From: Gennadij Pastuhov 2:5036/26 11 Mar 2020 13:17 +0200
To: All
Subject: Net::DNS vs. dig
Рад всех приветствовать! А особенно - All! Требуется делать запросы к различным DNS серверам и сравнивать полученные ответы. Насколько хорошо работает Net::DNS? Или лучше парсить вывод dig? Или есть ещё инструменты? ... Jonny wanna live
From: Dmitry Ivanov 2:5023/24.3209 24 Feb 2020 11:55 +0200
To: Ruslan Suleimanov 2:467/888
Subject: скрипт для сравнений
Здравствуйте, Ruslan. Вы писали 2 февраля 2020 г., 22:49:16: > Кто подскажет как написать скрипт сравнений. Каждый файл в свой массив посторочно и use Array::Utils -- С уважением, Dmitry
From: Stas Mishchenkov 2:460/5858 21 Feb 2020 16:08 +0200
To: Eugene Grosbein grosbein.net
Subject: telegramm api
Hi, Eugene! 21 фев 20 19:46, Eugene Grosbein -> Stas Mishchenkov: SM>> Вопрос с SSL в перле остался открытым. EG> Hет такого понятия как "SSL в перле". EG> Есть реализации SSL/TLS в разных C-библиотечках типа BoringSSL, EG> OpenSSL, всякие GNU* и ещё есть разные перловые модули, EG> которые могут использовать библиотечки C или (чем черт не шутит) EG> даже реализовывать алгоритмы самостоятельно. EG> И надо читать доку на используемые модули о том, EG> как именно они работают с SSL/TLS. Извини. Неверно выразился. Не удается установить SSL соединение с сервером телеграма. Have nice nights. Stas Mishchenkov.
From: Eugene Grosbein grosbein.net 21 Feb 2020 20:05 +0200
To: Stas Mishchenkov 2:460/5858
Subject: telegramm api
21 февр. 2020, пятница, в 13:42 NOVT, Stas Mishchenkov написал(а): SM>>> use Net::INET6Glue::INET_is_INET6; SM>>> use WWW::Telegram::BotAPI; SM>>> my $api = WWW::Telegram::BotAPI->new( SM>>> # указываем токен вашего бота SM>>> token => '*********************************************' SM>>> ); SM>>> # получаем очередь сообщений. По умолчанию, отдается массив не более 100 SM>>> $api->> getUpdates(); SM>>> #Вот здесь и опадает. EG>> А ты вообще пробовал читать документацию на модуль? SM> С этого начал. Плохо читал, там есть метод agent, который возвращает экземпляр класса, используемого в качестве транспорта: LWP::UserAgent (по умолчанию) или Mojo::UserAgent. А в документации на LWP::UserAgent описан метод ssl_opts, который позволяет задавать опции SSL, которые экземпляр будет использовать. И ещё есть ссылка на IO::Socket::SSL, который делает реальную работу по обёртыванию сокетов в SSL. В документации на IO::Socket::SSL описана глобальная переменная, которая описывает последнюю ошибку SSL. Для кода типа твоего проверять её вполне достаточно. Опять намёк. EG>> Про обработку ошибок через eval там написано, про метод parse_error, EG>> про выставление env TELEGRAM_BOTAPI_DEBUG=1 перед запуском скрипта... SM> Получается менее информативно, но да, - выдает ту же ошибку. Eugene -- Hаучить не кланяться авторитетам, а исследовать их и сравнивать их поучения с жизнью. Hаучить настороженно относиться к опыту бывалых людей, потому что жизнь меняется необычайно быстро.
From: Eugene Grosbein grosbein.net 21 Feb 2020 20:06 +0200
To: Stas Mishchenkov 2:460/5858
Subject: telegramm api
21 февр. 2020, пятница, в 13:40 NOVT, Stas Mishchenkov написал(а): EG>> new LWP::UserAgent->new(ssl_opts => { EG>> verify_hostname => 0, EG>> SSL_cipher_list => '', EG>> }) SM> Для того, что бы это заработало, нужно править модуль телеграм бот апи? Hет, подробнее ответил в другом письме. Eugene
From: Eugene Grosbein grosbein.net 21 Feb 2020 19:46 +0200
To: Stas Mishchenkov 2:460/5858
Subject: telegramm api
21 февр. 2020, пятница, в 13:43 NOVT, Stas Mishchenkov написал(а): SM> Вопрос с SSL в перле остался открытым. Hет такого понятия как "SSL в перле". Есть реализации SSL/TLS в разных C-библиотечках типа BoringSSL, OpenSSL, всякие GNU* и ещё есть разные перловые модули, которые могут использовать библиотечки C или (чем черт не шутит) даже реализовывать алгоритмы самостоятельно. И надо читать доку на используемые модули о том, как именно они работают с SSL/TLS. Eugene
From: Stas Mishchenkov 2:460/5858 21 Feb 2020 12:42 +0200
To: Eugene Grosbein grosbein.net
Subject: telegramm api
Hi, Eugene! 19 фев 20 17:58, Eugene Grosbein -> Stas Mishchenkov: SM>>>> Hе ёрничай, а подскажи. Я сразу ssl заподозрил. Вопрос, - где SM>>>> править? EG>>> Ты ж так и не сподобился показать свой код, EG>>> кто ж тебе скажет, как его править. Типа намёк. SM>> #!/usr/bin/perl SM>> use Net::INET6Glue::INET_is_INET6; SM>> use WWW::Telegram::BotAPI; SM>> my $api = WWW::Telegram::BotAPI->new( SM>> # указываем токен вашего бота SM>> token => '*********************************************' SM>> ); SM>> # получаем очередь сообщений. По умолчанию, отдается массив не более 100 SM>> $api-> getUpdates(); SM>> #Вот здесь и опадает. EG> А ты вообще пробовал читать документацию на модуль? С этого начал. EG> Про обработку ошибок через eval там написано, про метод parse_error, EG> про выставление env TELEGRAM_BOTAPI_DEBUG=1 перед запуском скрипта... Получается менее информативно, но да, - выдает ту же ошибку. Have nice nights. Stas Mishchenkov.