Я хотел бы написать короткий и простой скрипт, который ищет файл с использованием специального фильтра c и проверяет возраст этого файла. Я хочу написать короткий вывод и код ошибки. Это должно быть доступно для NRPE-сервера.
Сам скрипт работает, но у меня проблема только тогда, когда файл не существует. Это происходит с этой командой:
newestfile=$(ls -t $path/$filter | head -1)
Когда файлы существуют, все работает как надо. Когда ничто не соответствует моему фильтру, я получаю вывод (я изменил фильтр на * .zip, чтобы показать):
ls: cannot access '/backup/*.zip': No such file or directory
Но я хочу получить следующий вывод, а затем просто выйти из сценария с кодом 1 :
there are no backups with the filter *.zip in the directory /backup
Я почти уверен, что это очень простая проблема, но я просто не знаю, что случилось. Кстати, я все еще "новичок" в сценариях bash.
Вот весь мой код:
#!/bin/bash
# Set the variables
path=/backup
filter=*.tar.gz
# Find the newest file
newestfile=$(ls -t $path/$filter | head -1)
# check if we even have a file
if [ ! -f $newestfile ]; then
echo "there are no backups with the filter $filter in the directory $path"
exit 1
fi
# check how old the file is that we found
if [[ $(find "$newestfile" -mtime +1 -print) ]]; then
echo "File $newestfile is older than 24 hours"
exit 2
else
echo "the file $newestfile is younger than 24 hours"
exit 0
fi