История изменений
Исправление KennyMinigun, (текущая версия) :
-
#!/usr/bin/env perl
- Закрывай файловые дескрипторы (close)
- Выдели парсинг отдельных (форматов) файлов в отдельные функции, тогда интерфейс станет проще
- Запуск команд через backticks — сильно подвержен иньекциям. Посмотри в сторону IPC::Open3 или аналогов (IPC::run?)
- Лучше не использовать sudo в скрипте, а требовать чтоб скрипт запускали с нужным EUID ($>). Иначе предоставлять конфиг для sudo вместе со скриптом.
- Предпочитай не читать все сразу, а по линии:
my $stdout = ...; # open3? while (my $line = <$stdout>) { chomp $line; # если надо ... }
- Напиши людский help:
my $help = <<"__HELP__"; Usage: $0 [options] Options: -h, --help Show this help page -w, --warning=NUM ... описание ... ... __HELP__ my %options = ( # default values (if needed) help => 0, warning => 0, ... ); GetOptions(\%options, 'help|' 'warning|w=i', 'critical|c=i', ... ) or die('invalid options, see --help'); if ($options{help}) { print $help; exit 0; }
Исходная версия KennyMinigun, :
- Закрывай файловые дескрипторы (close)
- Выдели парсинг отдельных (форматов) файлов в отдельные функции, тогда интерфейс станет проще
- Запуск команд через backticks — сильно подвержен иньекциям. Посмотри в сторону IPC::Open3 или аналогов (IPC::run?)
- Лучше не использовать sudo в скрипте, а требовать чтоб скрипт запускали с нужным EUID ($>). Иначе предоставлять конфиг для sudo вместе со скриптом.
- Предпочитай не читать все сразу, а по линии:
my $stdout = ...; # open3? while (my $line = <$stdout>) { chomp $line; # если надо ... }
- Напиши людский help:
my $help = <<"__HELP__"; Usage: $0 [options] Options: -h, --help Show this help page -w, --warning=NUM ... описание ... ... __HELP__ my %options = ( # default values (if needed) help => 0, warning => 0, ... ); GetOptions(\%options, 'help|' 'warning|w=i', 'critical|c=i', ... ) or die('invalid options, see --help'); if ($options{help}) { print $help; exit 0; }