Size: a a a

2020 December 01

MD

Mihail Dvornikov in Modern::Perl
Нельзя объять необъятное - невозможно познать все науки, нельзя увидеть все на свете, успеть сделать все дела. Знаменитый афоризм Козьмы пруткова в оригинале звучит так: "Никто не обнимет необъятного". Yandex.
источник
2020 December 02

як

я никуда не тороплюс... in Modern::Perl
Помогите распарсить!
источник

як

я никуда не тороплюс... in Modern::Perl
use strict;
use warnings;
use Getopt::Long;

# PRTG-Status from
# https://kb.paessler.com/en/topic/39513-is-there-a-shell-script-example-for-the-prtg-ssh-script-sensor
my $prtg_status_ok      = 0;
my $prtg_status_warning = 1;
my $prtg_status_error   = 2;

# Defaults:
my $smtp_server             = '';
my $warning_number_of_days  = 30;
my $critical_number_of_days = 10;

GetOptions(
   "smtp_server=s",             \$smtp_server,
   "warning_number_of_days=s",  \$warning_number_of_days,
   "critical_number_of_days=s", \$critical_number_of_days,
);

# Sanity check of arguments from commandline
if (  !$smtp_server
   || $smtp_server !~ m/^[a-z0-9\-\.]+$/
   || $critical_number_of_days !~ m/^[0-9]+$/
   || $warning_number_of_days !~ m/^[0-9]+$/ )
{
   print
"$prtg_status_error:0:Usage $0 --smtp_server=smtp-relay.gmail.com --warning_number_of_days=30 --critical_number_of_days=10\n";
   exit;
}


my $cmd = sprintf '/usr/lib64/nagios/plugins/check_smtp -H %s -S -D %d,%d',
   $smtp_server, $warning_number_of_days, $critical_number_of_days;
my $result_from_nagioscheck = `$cmd`;


# Defaults:
my $prtg_status      = $prtg_status_error;
my $prtg_status_text = 'unknown';

# I don't care because I do not get number of days
# of certificate valid on all 3 statuses from Nagios check
my $prtg_number_to_return = 0;

if ($result_from_nagioscheck =~ m/^WARNING/) {
   $prtg_status      = $prtg_status_warning;
   $prtg_status_text = $result_from_nagioscheck;
} elsif ($result_from_nagioscheck =~ m/^CRITICAL/) {
   $prtg_status      = $prtg_status_error;
   $prtg_status_text = $result_from_nagioscheck;
} elsif ($result_from_nagioscheck =~ m/^OK/) {
   $prtg_status      = $prtg_status_ok;
   $prtg_status_text = $result_from_nagioscheck;
}

print join( ':', $prtg_status, $prtg_number_to_return, $prtg_status_text )
источник

як

я никуда не тороплюс... in Modern::Perl
я никуда не тороплюсь когда напьюсь тогда напьюсь
use strict;
use warnings;
use Getopt::Long;

# PRTG-Status from
# https://kb.paessler.com/en/topic/39513-is-there-a-shell-script-example-for-the-prtg-ssh-script-sensor
my $prtg_status_ok      = 0;
my $prtg_status_warning = 1;
my $prtg_status_error   = 2;

# Defaults:
my $smtp_server             = '';
my $warning_number_of_days  = 30;
my $critical_number_of_days = 10;

GetOptions(
   "smtp_server=s",             \$smtp_server,
   "warning_number_of_days=s",  \$warning_number_of_days,
   "critical_number_of_days=s", \$critical_number_of_days,
);

# Sanity check of arguments from commandline
if (  !$smtp_server
   || $smtp_server !~ m/^[a-z0-9\-\.]+$/
   || $critical_number_of_days !~ m/^[0-9]+$/
   || $warning_number_of_days !~ m/^[0-9]+$/ )
{
   print
"$prtg_status_error:0:Usage $0 --smtp_server=smtp-relay.gmail.com --warning_number_of_days=30 --critical_number_of_days=10\n";
   exit;
}


my $cmd = sprintf '/usr/lib64/nagios/plugins/check_smtp -H %s -S -D %d,%d',
   $smtp_server, $warning_number_of_days, $critical_number_of_days;
my $result_from_nagioscheck = `$cmd`;


# Defaults:
my $prtg_status      = $prtg_status_error;
my $prtg_status_text = 'unknown';

# I don't care because I do not get number of days
# of certificate valid on all 3 statuses from Nagios check
my $prtg_number_to_return = 0;

if ($result_from_nagioscheck =~ m/^WARNING/) {
   $prtg_status      = $prtg_status_warning;
   $prtg_status_text = $result_from_nagioscheck;
} elsif ($result_from_nagioscheck =~ m/^CRITICAL/) {
   $prtg_status      = $prtg_status_error;
   $prtg_status_text = $result_from_nagioscheck;
} elsif ($result_from_nagioscheck =~ m/^OK/) {
   $prtg_status      = $prtg_status_ok;
   $prtg_status_text = $result_from_nagioscheck;
}

print join( ':', $prtg_status, $prtg_number_to_return, $prtg_status_text )
у меня нагиос плагин вот на такой запуск:
/usr/lib64/nagios/plugins/check_smtp -H smtp-relay.gmail.com --certificate=
выдаёт дату в формате
SSL OK - Certificate 'smtp-relay.gmail.com' will expire in 54 days on 2021-01-26 10:37 +0300/MSK.
или
SSL CRITICAL - Certificate 'mail.example.com' expired on 2018-10-02 16:25 +0300/MSK.


Мне надо распарсить дату, отнять от неё текущее число и передать в мониторинг вместе со статусом (если разница отрицательная или ноль - critical выкинуть, если меньше или равна 10 - WARNING; больше или равна 30 - OK)
источник

SZ

Sergey Zhmylove in Modern::Perl
я никуда не тороплюсь когда напьюсь тогда напьюсь
у меня нагиос плагин вот на такой запуск:
/usr/lib64/nagios/plugins/check_smtp -H smtp-relay.gmail.com --certificate=
выдаёт дату в формате
SSL OK - Certificate 'smtp-relay.gmail.com' will expire in 54 days on 2021-01-26 10:37 +0300/MSK.
или
SSL CRITICAL - Certificate 'mail.example.com' expired on 2018-10-02 16:25 +0300/MSK.


Мне надо распарсить дату, отнять от неё текущее число и передать в мониторинг вместе со статусом (если разница отрицательная или ноль - critical выкинуть, если меньше или равна 10 - WARNING; больше или равна 30 - OK)
А если 20?
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
все взрывается, бар сгорает
источник

SZ

Sergey Zhmylove in Modern::Perl
ЗЫ а ещё он сам пишет, сколько дней осталось. Всё что ты хочешь делается одной регуляркой вместо того длинного скрипта.
источник

як

я никуда не тороплюс... in Modern::Perl
Sergey Zhmylove
А если 20?
тоже warning наверн 😊
источник

як

я никуда не тороплюс... in Modern::Perl
Sergey Zhmylove
ЗЫ а ещё он сам пишет, сколько дней осталось. Всё что ты хочешь делается одной регуляркой вместо того длинного скрипта.
ну это я и сам могу утверждать

меня ночью разбулят, спросят:
— что посоветуют в чяте по перлу (кроме однострочника)
— регулярку -
ни секнды ни задумавшись отвечу я
источник

VG

Vadim Goncharov in Modern::Perl
нет, блядь, AnyEvent
источник

SZ

Sergey Zhmylove in Modern::Perl
Vadim Goncharov
нет, блядь, AnyEvent
++
источник

SZ

Sergey Zhmylove in Modern::Perl
я никуда не тороплюсь когда напьюсь тогда напьюсь
ну это я и сам могу утверждать

меня ночью разбулят, спросят:
— что посоветуют в чяте по перлу (кроме однострочника)
— регулярку -
ни секнды ни задумавшись отвечу я
Что тебе нужно-то?
источник

SZ

Sergey Zhmylove in Modern::Perl
Пайп написать или что?
Скрипт вроде уже есть какой-то
источник

як

я никуда не тороплюс... in Modern::Perl
Sergey Zhmylove
Пайп написать или что?
Скрипт вроде уже есть какой-то
Скрипт не парсит дату и не считает количество дней. Или считает, но логику я не понимаю. Он выдаёт сразу статус/код, что контринтуитивно.
источник
2020 December 03

SZ

Sergey Zhmylove in Modern::Perl
я никуда не тороплюсь когда напьюсь тогда напьюсь
Скрипт не парсит дату и не считает количество дней. Или считает, но логику я не понимаю. Он выдаёт сразу статус/код, что контринтуитивно.
Почему контринтуитивно?
источник

як

я никуда не тороплюс... in Modern::Perl
Sergey Zhmylove
Почему контринтуитивно?
Потому что я не понимаю перловую логику. Write only language
источник

SZ

Sergey Zhmylove in Modern::Perl
Прочитай что там значит ключ -D
источник

VG

Vadim Goncharov in Modern::Perl
какой из скриптов?
источник

як

я никуда не тороплюс... in Modern::Perl
Sergey Zhmylove
Прочитай что там значит ключ -D
то же самое, что —-certificate - проверка срока действия
источник

SZ

Sergey Zhmylove in Modern::Perl
я никуда не тороплюсь когда напьюсь тогда напьюсь
то же самое, что —-certificate - проверка срока действия
Что именно он значит блдь?
источник