[Cascavel-pm] Comandos externos
Luis Campos de Carvalho
monsieur_champs em yahoo.com.br
Sexta Dezembro 23 09:23:56 PST 2005
--- Paulo Ricardo <paulo.ricardo em expresso.com.br> escreveu:
> Bom dia pessoal.
>
> Para executar um comando comando externo gerando
> um retorno deve ser usado SYSTEM caso contrário,
> deverá ser usado o EXEC, correto?
DEPENDE. ;-)
Na maior parte das vezes, sim.
> Bem, o comando no meu caso, seria desta forma:
>
> system("svc -dx /var/qmail/supervise/smtp/");
Ahhhh!!! Aspas duplas num comando é problema sério!
Tente por favor usar aspas simples, ou o operador "q":
system q{/caminho/para/o/svc -dx /var/qmail/supervise/smtp/};
Vai funcionar do mesmo jeito e impede que seu programa seja sacaneado com alterações (simples)
em variáveis de ambiente e coisas do gênero...
> A minha dúvida é: Qual procedimento de verificação
> do retorno deste comando dado acima.
> Em algumas linguagens seria desta forma.
> if (!system("svc -dx /var/qmail/supervise/smtp/")){
> # NÃO RETORNA
> } else {
> # RETORNA
> }
Existe uma dica sobre isso na manpage do system, se eu não me engano. Tente "perldoc -f system".
Em particular, acho que isso aqui ajuda:
# $? é o resultado de retorno de um "system()"
if ($? == -1) {
print "failed to execute: $!\n";
} elsif ($? & 127) {
printf "child died with signal %d, %s coredump\n",
($? & 127), ($? & 128) ? 'with' : 'without';
} else {
printf "child exited with value %d\n", $? >> 8;
}
> Outra questão. Este comando
> ( system("svstat /var/qmail/supervise/smtp/"))
> verifica no qmail a quantidade em segundos que
> um respectivo serviço esta esta ligado, que no
> caso, seria o serviço smtp.
> No konsole, o comando dado acima retorna o
> seguinte:
>
> up (pid 2096) 1170 seconds
>
> Eu preciso coletar este 1170. Alguma dica?
Você pode usar assim:
my ( $seconds ) =
`/caminho/para/svstat /var/qmail/supervise/smtp`
=~ m/(\d+)\s+seconds?\s*$/o;
E isso deve colocar na sua variável $seconds o valor esperado (neste exemplo, 1170).
Espero que isso ajude.
Putamplexos!
--
Luis Campos de Carvalho
Member of "São Paulo Perl Mongers",
Unix SysAdmin & OCP/DBA Oracle
_______________________________________________________
Yahoo! doce lar. Faça do Yahoo! sua homepage.
http://br.yahoo.com/homepageset.html
Mais detalhes sobre a lista de discussão Cascavel-pm