Como posso fazer com que meu sistema me envie um email quando um problema crítico é encontrado, com base na saída do comando?

0

Eu gostaria que meu sistema Linux tivesse um servidor script / syslog tal que ele primeiro telnetasse ou acessasse remotamente meu outro sistema, e então executasse um comando (por exemplo, netstat -an) e se o sistema encontrasse algo com " syn_sent "deve gerar um email ou sms imediatos.

Como posso configurar isso?

    
por Waqas 20.02.2014 / 12:00

2 respostas

1

O UNIX já suporta (o padrão bem bonito) o registro em log do syslog, que permite o registro de mensagens do kernel e do aplicativo e até mesmo o encaminhamento de mensagens para outros hosts da rede.

Você pode usar um cronjob para executar periodicamente algo como:

netstat -nntulpa | grep SYN_SENT | logger

Isso gravará a saída netstat nos arquivos de log locais.

Para receber os logs em um "loghost" central, tudo o que você precisa é de uma linha na configuração do syslog. Dependendo do seu daemon de syslog escolhido, isso se parece com:

*.* @192.168.5.1

No final do recebimento, você pode fazer todos os tipos de coisas extravagantes (até mesmo enviar e-mails), desde que você escolha uma implementação de syslog com todos os recursos, como syslog-ng ou rsyslog.

Sua pergunta é muito ampla, você também pode usar uma solução de monitoramento como Icinga e um plugin personalizado que executa o mesmo comando (menos a parte do registrador). O syslog é mais fácil de configurar e suportado fora da caixa pela maioria dos aplicativos. Espero que minha resposta ajude você no lado do syslog da sua pergunta.

    
por user250336 20.02.2014 / 12:58
1

Se eu presumo que o objetivo é receber um e-mail ou sms quando uma determinada atividade ocorre no outro sistema, você pode fazer o polling como você sugere ou fazer o outro sistema enviar uma mensagem de log quando esse evento ocorrer. Polling é a opção mais fácil, mas lenta e útil apenas para capturar eventos longos (a menos que esteja bloqueada no outro lado). Normalmente o SYN_SENT acontece muito, mas é um processo rápido, o polling sem filtros adicionais daria um tipo de comportamento aleatório.

Isso ajudaria a dividir essa questão em várias partes, são muitos itens em uma única pergunta.

Para pesquisar, isso pode ser feito executando um script através de um cronjob que faz uma conexão e executa o comando para ver se o evento ocorre. Agora este script pode enviar um email. Se necessário, o script pode criar seu próprio log ou enviar uma mensagem de log ao syslog.

Possíveis perguntas ou googles:

how to execute a script via a cronjob
how to setup the remote connection from script (security?)
how to detect your event
how to send out an email from script
how to do additional logging.

Para responder diretamente em eventos rápidos, é melhor configurar o outro sistema para enviar uma mensagem de log e tornar a atividade registrada.

Alguns softwares de firewall poderão fazer o logging em syn_sent, talvez até mesmo enviar o log para um servidor syslog ou você precisa de um programa separado para isso. No lado do servidor, você recebe uma mensagem em seu syslog-daemon, que pode ser configurado para executar um script que pode enviar um email, se necessário.

Possíveis dúvidas com outras máquinas (somente para askubuntu quando se trata de uma máquina Ubuntu):

which firewall software
how to configure the firewall to log the event
which program to send to remote syslog

Possíveis perguntas no servidor:

how to configure syslog-daemon to run a script on incoming events
how to send out an email from script
    
por Requist 20.02.2014 / 22:15