Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Пользователь


Сообщения: 51
Благодарности: 0

Профиль | Отправить PM | Цитировать


Как то так:

Код: Выделить весь код
use strict;
use utf8;

use Term::ANSIColor;
use Time::Piece;

binmode STDOUT, ":utf8";
binmode STDERR, ":utf8";

our $inventory_host = '127.0.0.1';
our $inventory_port = 8080;

print "\n";

sub console {
  my %args = ( COLOR => 'white' , MOMENT => localtime->strftime('%Y/%m/%d %H:%M:%S') , MESSAGE => 'Нет сообщения' , @_ );
  print STDERR color($args{COLOR}) , $args{MOMENT} . ' ' , color('bold') , $args{MESSAGE} , color('reset') , "\n";
  }

sub request {
  my %args = ( DBASE => '', REQUEST => '', @_ );
  if( $args{DBASE} eq '' ) { die "Пустое имя БД"; }
  if( $args{REQUEST} eq '' ) { die "Пустой запрос"; }

  my %dictionary = ();

  my @linez = `psql -c "copy ($args{REQUEST}) to stdout with (format csv,header false);" $args{DBASE} postgres`;
  foreach my $line(@linez) {
    chomp $line; unless($line =~ m/^([^,]+),(.*)$/) { next; }
    $dictionary{$1} = [ split ',', $2 ];
    }

  return %dictionary;
  }

unless(`smartctl -a /dev/sdb | grep Power_On_Hours` =~ m/- ([0-9a-zA-Z\ \:\-\+\.\,]+)/) {
  console( COLOR => 'red', MESSAGE => 'Ошибка Hourse sdb' ); }
my $smart_h_sdb = $1;

unless(`smartctl -a /dev/sda | grep Temperature_Celsius` =~ m/- ([0-9a-zA-Z\ \:\-\+\.\,]+)/) {
  console( COLOR => 'red', MESSAGE => 'Ошибка Temp sda' );}
my $smart_t_sda = $1;

console( MESSAGE => "SMART T SDb: $smart_t_sda" );
console( MESSAGE => "SMART H SDb: $smart_h_sdb" );

if($inventory_host ne '') { `echo '"$smart_t_sda","$smart_h_sdb"' | nc -w 16 $inventory_host $inventory_port`; }

Отправлено: 09:49, 11-02-2020 | #3