Ola amigos, preciso de uma ajuda.
Estou montando um script para solucionar um problema que tenho com servidores compartilhados antigos.
Bom, a situação é a seguinte, tenho varios servers compartilhados, que não sou o admin, sou incumbido de "apagar incêndios" e um destes incêndios é que o conjunto de servidores nesta situação, muitas das vezes não possui o logrotate configurado e acaba gerando arquivos de log monstruosos com entradas de varias datas diferentes.Para sanar o meu problema estou bolando um script que faça o seguinte.
Leia o arquivo de log arq.log e a partir da leitura faça pequenos arquivos pertinentes as datas do incremento com a string novo.arq.log.stringdedata.gz ja compactando estes apagando , no termino da execução as linhas inseridas nestes novos arquivos deveriam ser apagadas do arquivo principal.
Notei que quando o script tenta executar a função em strings menores que 10 ele não funciona e gera arquivos vazios, frente a isso recriei o script abaixo com o novo grep para sanar, mas agora os arquivos até são gerados mas não apresentam as entradas que desejo nem mesmo o processo secundario de remover as entradas do arquivo principal.
acredito que meu erro está basicamente aqui : grep -i '"Jun $j "\|"Jun $j "'
As entradas padrão do meu arquivo de log são do padrão :
Jun 16 09:21:46 ...
Jun 9 16:21:18
assim inseri um espaço em branco na condicional or do grep
Segue abaixo o script :
#!/bin/bash
for i in {1..31}
do j=$i && cat arq.log |grep -i '"Jun $j "\|"Jun $j "' |gzip --stdout > novo.arq.log.$j.06.2014.gz && sed -i '/^Jun '"$j"' /d' arq.log
done
tambem tentei este :
do j=$i && cat arq.log |grep -i 'Jun {$j} \|Jun {$j} ' |gzip --stdout > novo.arq.log.$j.06.2014.gz && sed -i '/^Jun '"$j"' /d' arq.log
done
Alguém sabe como eu poderia proceder?
--
Atenciosamente,
Rodrigo Silva Cunha - RJ - São Gonçalo
Cel: +55 (0xx21) 7519-7375
e-mail :
address@hidden"Servo do Reino de Deus.
Servo, do Rei e Líder Jesus Cristo de Nazaré."