[SP-pm] Monitorar processos gerados pelo system

thiago User thiago at nerdsland.net
Sun Nov 22 14:52:15 PST 2009


Eu uso o módulo Expect,
http://search.cpan.org/~rgiersig/Expect-1.21/Expect.pod
sempre que preciso interagir com comandos externos.

#!/usr/local/bin/perl -w
use Expect;
use strict;

my $df = new Expect;
my @options = ('-h');
#$df->raw_pty(0);
$df->spawn('df', em options );
my $funcionou = $df->expect(5, '-re', 'udev'); # Eu sei que esta string
#vai aparecer no meu sistema.

 if (defined $funcionou){
	print "O comando foi executado e a string esperada encontrada\n";
	} else {
	print "A string procurada não foi localizada\n"
	}

Veja a saída:
thiago em ubuntu:~$ ./df.pl
Sist. Arq.            Tam   Usad Disp  Uso% Montado em
/host/ubuntu/disks/root.disk
                       13G  5,4G  6,9G  45% /
tmpfs                 1,6G     0  1,6G   0% /lib/init/rw
varrun                1,6G  116K  1,6G   1% /var/run
varlock               1,6G     0  1,6G   0% /var/lock
udev                  1,6G  172K  1,6G   1% /dev
tmpfs                 1,6G  364K  1,6G   1% /dev/shm
O comando foi executado e a string esperada encontrada


Agora, se eu colocar uma string que não aparecerá nunca... Que no seu
caso será um string que deve aparecer sempre, caso contrário seria um
timeout - Vou fazer com telnet num PC standalone para forçar o timeout:

#!/usr/local/bin/perl -w
use Expect;
use strict;

my $df = new Expect;
my @options = ('10.10.10.100');
#$df->raw_pty(0);
$df->spawn('telnet', em options );
my $funcionou = $df->expect(5, '-re', 'Username:');

 if (defined $funcionou){
	print "O comando foi executado e a string esperada encontrada\n";
	} else {
	print "A string procurada não foi localizada\n"
	}

thiago em ubuntu:~$ ./df.pl
Trying 10.10.10.100...
A string procurada não foi localizada
thiago em ubuntu:~$ 

Espero que isto ajude com alguma coisa.



More information about the SaoPaulo-pm mailing list