Verificando integridade de servidores POP com PHP/sockets
O primeiro passo na construção de nosso script será definir um cabeçalho usado para recarregar nosso script de tempos em tempos. Podemos fazer isso usando a tag meta do HTML:
Neste caso, nosso script será recarregado a cada 60 segundos. Em seguida, vamos definir o array que contém a lista de servidores que será monitorada:
Neste exemplo utilizei endereços de servidores POP de provedores Internet, altere os mesmos para os servidores da sua empresa.
No bloco abaixo temos o coração do aplicativo. Utilizo uma estrutura de looping para percorrer cada máquina do array servidores, abrindo uma conexão TCP na porta 110 (2) com a mesma. Aproveitei do recurso de tabelas do HTML para melhorar a formatação da saída do programa.
(2) por padrão, o serviço POP sempre é executado na porta 110 de um servidor
Na linha:
A variável $stream armazena a conexão com o servidor em questão. O comando fsockopen se conecta à porta 110 de $servidor, em caso de erro durante a conexão, o número e a descrição do mesmo são respectivamente armazenadas em $errorno e $errorstr. O tempo de espera para a realização de conexão é de 30 segundos.
Seguindo a lógica do programa, se a variável $stream possuir um valor VERDADEIRO, sabemos que o servidor está aceitando conexões, caso contrário, mostramos a mensagem do erro ocorrido na tela.
<META HTTP-EQUIV="Refresh" CONTENT="60">
Neste caso, nosso script será recarregado a cada 60 segundos. Em seguida, vamos definir o array que contém a lista de servidores que será monitorada:
<?php $servidores = array ("pop3.uol.com.br","pop.matrix.com.br","pop.ibest.com.br"); ?>
Neste exemplo utilizei endereços de servidores POP de provedores Internet, altere os mesmos para os servidores da sua empresa.
No bloco abaixo temos o coração do aplicativo. Utilizo uma estrutura de looping para percorrer cada máquina do array servidores, abrindo uma conexão TCP na porta 110 (2) com a mesma. Aproveitei do recurso de tabelas do HTML para melhorar a formatação da saída do programa.
(2) por padrão, o serviço POP sempre é executado na porta 110 de um servidor
<?php while (list($chave,$servidor) = each($servidores)) { $stream = fsockopen ($servidor, 110, $errono, $errostr, 30); echo "<td>".$servidor."<br>"."Status:"; if ($stream) { echo "Ativo</td>"; } else { echo "<font color=red>" . $errostr . "</font></td>"; } } ?>
Na linha:
$stream = fsockopen ($servidor, 110, $errono, $errostr, 30);
A variável $stream armazena a conexão com o servidor em questão. O comando fsockopen se conecta à porta 110 de $servidor, em caso de erro durante a conexão, o número e a descrição do mesmo são respectivamente armazenadas em $errorno e $errorstr. O tempo de espera para a realização de conexão é de 30 segundos.
Seguindo a lógica do programa, se a variável $stream possuir um valor VERDADEIRO, sabemos que o servidor está aceitando conexões, caso contrário, mostramos a mensagem do erro ocorrido na tela.
<?php if ($stream) { echo "Ativo</td>"; } else { echo "<font color=red>Erro:" . $errostr . "</font></td>"; } ?>
Verificando, este algoritmo verifica portas TCP mas as UDP não.
Alguem saberia como capturar uma porta UDP ?
Alguem saberia como capturar uma porta UDP ?
07/10/2006 8:53am
(~18 anos atrás)
Você pode fazer isso com o socket_select...
Vou postar um artigo sobre isso! :)
[]s
Vou postar um artigo sobre isso! :)
[]s
27/07/2005 7:01pm
(~19 anos atrás)
Só queria elogiar o artigo.
É extremamente simples, o que torna fácil a assimilação. Trabalho com segurança e monitoramento e esse tipo de dica é muito importante quem trabalha com isso.
É extremamente simples, o que torna fácil a assimilação. Trabalho com segurança e monitoramento e esse tipo de dica é muito importante quem trabalha com isso.
19/07/2003 9:37pm
(~21 anos atrás)
Nilton,
A referência completa de qualquer função PHP
pode ser facilmente encontrada no site PHP.Net.
Veja:
http://www.php.net/manual/en/function.fsockopen.php
Atenciosamente,
Fábio Berbert de Paula
fabio@vivaolinux.com.br
www.vivaolinux.com.br
A referência completa de qualquer função PHP
pode ser facilmente encontrada no site PHP.Net.
Veja:
http://www.php.net/manual/en/function.fsockopen.php
Atenciosamente,
Fábio Berbert de Paula
fabio@vivaolinux.com.br
www.vivaolinux.com.br
02/07/2002 7:10am
(~22 anos atrás)
$servidores = array ("udp://127.0.0.1","udp://servidor.com.br");