Я совершенно новичок в сценариях bash, так что не стесняйтесь меня;).Сценарий Bash - если и еще если операторы
У меня есть файл, который выполняет некоторые проверки перед началом файла/warner, который отправляет электронное письмо.
Нет, что сценарий должен сделать, это:
Если слово «rror» можно найти в файле журнала, и если файл моложе 24 часа> отправить не удалось по электронной почте
Если файл старше 24 часов> отправить нерабочую ошибку
Если ни одно из указанных выше не является истинным, а файл менее 24 часов и если он содержит слово «uccess»> отправить успешную электронную почту.
Сценарий это сам
string=rror
string1=ucces
FILE=/var/log/rsnapshot.log
OLDTIME=86400
CURTIME=$(date +%s)
FILETIME=$(stat $FILE -c %Y)
TIMEDIFF=$(expr $CURTIME - $FILETIME)
#tail -n0 -F /var/log/rsnapshot.log | \
while read LINE
do
if [ echo "$LINE" | grep "$string" 1>/dev/null 2>&1 -a $TIMEDIFF -lt $OLDTIME ]; // <- line 18
then
/etc/init.d/warner "Warning from Socrates Backup" "Backup Failed"
elif [ $TIMEDIFF -gt $OLDTIME ];
then
/etc/init.d/warner "Warning from Socrates Backup - Backup Not Running!" "Backup file not running"
elif echo "$LINE" | grep "$string1" 1>/dev/null 2>&1
then
/etc/init.d/warner "Message from Socrates" "Backup Sucessfully Completed"
fi
done </var/log/rsnapshot.log
В настоящее время это отправить мне преуспевающую электронную почту (потому что файл меньше 24 часов, и у него есть сообщение «uccess». Однако в них, если/ElseIf написано правильно ? если что-нибудь не в состоянии будет их получить срабатывает, а также я получаю эту ошибку
line 18: [: missing `]'
Где находится линия 18? Если я подсчитаю строки, которые вы вставляли, они находятся в 'then'. – fedorqui
@fedorqui Извинения не видели вашего комментария. 18-я строка является первой, если –