Registros do Pipe BIND9 para um script shell.php

1

Estou tentando extrair alguns dados do log de consulta do BIND9. Eu gosto de canalizar as consultas para um script primeiro e, em seguida, analisá-lo e, em seguida, registrá-lo.

Como faço isso? Por favor ajude.

logging {     canal simple_log {         arquivo "/var/log/named/log.sh" versões 10 tamanho 10m; & lt; --- isso é possível?         tempo de impressão sim;         severidade de impressão sim;         categoria de impressão sim;     };     categoria default {         simple_log;     };     consultas de categoria {         simple_log;     }; };

    
por Nizzy 13.12.2011 / 10:22

1 resposta

2

Você precisa usar um fifo. Este é um arquivo "especial" que é realmente um soquete; Quando os processos abrem esse arquivo especial e o lê / grava nele, outros processos conectados obtêm os resultados dessas leituras / gravações.

Por exemplo, o BIND9 seria configurado para logar em um fifo, então seu script PHP também abriria o fifo, e apenas leria dele. Toda vez que o BIND9 escrevia, o PHP retornava uma leitura.

Veja man mkfifo , mas essencialmente:

mkfifo /var/log/named/log.fifo

Ter BIND9 logar isso (remover as versões e parâmetros de tamanho, eles não funcionarão com um fifo), então o PHP para ler e analisar é com você, mas lembre-se de abrir e ler como qualquer outro. arquivo normal. As leituras serão bloqueadas até que algo seja escrito.

Como teste, você pode fazer isso:

No terminal 1:

mkfifo /tmp/test_fifo
cat /tmp/test_fifo

O cat será bloqueado porque não há nada para ler ainda. Isso simula a leitura do PHP a partir do test_fifo .

Agora no terminal 2:

echo foo >/tmp/test_fifo

Observe como o Terminal 1 retorna seu "foo". Isso está simulando BIND9 escrevendo algo em.

Quando você terminar com um fifo, rm como qualquer outro arquivo normal.

    
por Caesium 13.12.2011 / 11:29