Você poderia fazer algo assim:
tail -f logfile | grep -v "some\.ip\.address\.to\.ignore"
ou
tail -f logfile | grep -v "some\.ip\.address\.to\.ignore.*user-name"
Estou apenas pensando sobre a melhor maneira de filtrar meus logs do sshd. O problema é que eu monitoro minhas caixas sobre SSH usando Nagios e Cacti. Ambos se conectam a cada 5 minutos e isso entope meus arquivos de log com um monte de entradas, tornando difícil fazer uma rápida 'cauda' para ver o que está acontecendo.
Eu gostaria de ter todos os logins do meu usuário de monitoramento (em um IP específico) registrados em um arquivo separado.
O ideal seria evitar instalar o syslog-ng ou similar. Eu teria que configurar isso em uma variedade de máquinas Ubuntu, CentOS e FreeBSD (executando uma variedade de versões do OpenSSH), então isso facilitará a vida se eu puder fazer isso sem software adicional.
Alguma recomendação sobre como conseguir isso?
Obrigado!
Você poderia fazer algo assim:
tail -f logfile | grep -v "some\.ip\.address\.to\.ignore"
ou
tail -f logfile | grep -v "some\.ip\.address\.to\.ignore.*user-name"
você poderia passar o seu arquivo syslog para canalizar assim
mkfifo /var/log/pipes/pipe1
e depois
leia isso com o script que removerá as strings que você não deseja assim:
cat /var/log/pipes/pipe1 | grep -v "login from xxx.xxx.xxx" | while read LINE
do
echo $LINE >>/var/log/ssh.log
done
Você pode tentar ossec , ele tem uma análise de log muito boa.
Swatch é um bom programa para rastrear e filtrar arquivos de log, até mesmo suportando linhas de colorização. Existe um pacote Debian / Ubuntu também.