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.