Eu tenho um script de shell de bootstrap que é executado como a primeira coisa quando um servidor Linux fresco é inicializado no modo multiusuário com rede.
Quando estiver completo, gostaria de relatar o status do erro para um servidor loghost central, que atualmente está executando o syslog-ng com a porta udp / tcp 514 e um servidor web na porta 80 (portanto, eu poderia usar php / perl para ouvir mensagens formatadas em http ...)
No entanto, não consigo instalar nenhum pacote, pois a compilação é especificada pelo cliente e também gostaria de não fazer nenhuma alteração nos arquivos de configuração. Portanto, o syslog é primitivo e, possivelmente, o wget / curl não está instalado.
Eu ia fazer algo assim:
exec 3<>/dev/tcp/www.google.com/80
echo -e “GET / HTTP/1.1\nhost: http://loghost.local/message\n\n” >&3
mas acontece que esses dispositivos estão desativados nas caixas do Debian.
Eu posso obviamente colocar em cascata as diferentes opções, por exemplo:
if [ -x wget ]; then
echo "using wget to post message"
elif [ -x curl ]; then
echo "using curl to post message"
elif [ ]; then
exec 3<>/dev/tcp/loghost.local/80
echo -e “GET / HTTP/1.1\nhost: http://loghost.local/message\n\n” >&3
else
echo nc ## some netcat command so send stuff to udp 514...
fi
O logger parece apenas suportar conexões locais e de socket, e presumivelmente sofre com a restrição debian
Parece que tenho muitas opções, pois posso configurar muitas coisas no serviço. Uma dessas idéia muito boba era configurar o servidor de nomes local para armazenar em cache os registros que faltavam em determinados domínios e fazer com que o script de inicialização fosse executado como
getent hosts logmessage.sourceserver.mydomain.com
e, presumivelmente, eu poderia analisar o status do arquivo de log nomeado ...; -)
obviamente, o netcat é uma opção se estiver instalado, no entanto, alguns dos servidores compilam de forma agressiva coisas como o netcat porque é muito flexível.
De qualquer forma, esse problema é mais para interesse informacional do que para propósitos práticos, porque eu posso trocar temporariamente o arquivo syslog.conf, mas seria interessante fazê-lo sem tocar no servidor de remoção ...