Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

chicosoft

Ajuda com BD + Perl + IF

Mensagens Recomendadas

chicosoft

Olá estou a escrever um script para executar uma determinada função caso detecte que existe um host em baixo registado na BD.

Para já ele só vê na BD e apresenta os hosts em baixo:

#!/usr/bin/perl
use strict;
use DBI;
use warnings;
my $username='user';
my $pass='pass';
my $db='alarms';
my $table= ("test");
my $dbh = DBI->connect( "dbi:mysql:$db", $username, $pass, { 'PrintError' => 1, 'RaiseError' => 1 } );

my $rs = $dbh->selectall_arrayref("SELECT host,alert FROM $table where alert='down'");
$dbh->disconnect();
foreach my $myRow (@$rs) {
 print "@$myRow\n";
}

Como faço para ele executar um comando se o host for igual a x ou y?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
chicosoft

Peso ter achado a solução. está correcto?

foreach my $myRow (@$rs) {
 print "@$myRow\n";

 foreach my $myElem (@$myRow) {
   if($myElem eq A){print "A";}
   elsif($myElem eq B){print "B";}

   print "\n";
   last;
 }
}

sou um pouco fraco em perl :S

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
chicosoft

Não podias fazer simplemente SELECT host FROM $table WHERE alert='down' AND (host = 'A' OR host = 'B')?

como faz ele um comando assim?

Quero que, se aparecer host: A executa um comando X, se for B executa comando Y.

Editado por chicosoft

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Carlos

Quero que, se aparecer host: A executa um comando X, se for B executa comando Y.

Ok, nesse caso terás mesmo de usar o ciclo. Mas em princípio só precisas de um ciclo.


foreach my $myRow (@$rs) {
 my ($host, $alert) = @$myRow;
 if($host == ...) {...}
 elsif($host == ...) {...}
}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.