[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