bash script - variável de comando need date

2

Estou tentando criar um script que analise o arquivo /var/log/secure para tentativas de login com falha apenas para a data de hoje e redirecione essas tentativas para um arquivo separado para que eu possa ver essas tentativas apenas nesse arquivo. Estou com um problema em fazer com que o script funcione com a saída do comando date. Este é o meu script:

#!/bin/bash
mydate=$(date '+%D')
mytime=$(date '+%H:%M')
monthday=$(date '+%b %d)
error=$(grep Failed /var/log/secure | grep $monthday >> ~/logs/failed.log

Com este código, não funcionará. No entanto, se eu codificar a data em como:

error=$(grep Failed /var/log/secure | grep 'Feb 28' >> ~/logs/failed.log

funciona.

Como posso fazer com que o $monthday seja a coisa grep'd?

    
por user60618 28.02.2014 / 21:55

1 resposta

3

Você está perdendo aspas:

grep Failed /var/log/secure | grep "$monthday" >> ~/logs/failed.log
# .................................^.........^

Sem as aspas, o grep verá 2 argumentos - o grep irá ignorar o stdin e procurar a string "Feb" no arquivo "28". Eu vejo um erro "grep: 28: nenhum tal arquivo ou diretório"

    
por 28.02.2014 / 22:08