wget в cron :запись в систему, только если ошибок не обнаружено/файл не пустой

$ perl -F- -lane 'print join "-", @F[0..($#F-2)]' googleapis.txt
bucket,abc-def-ghi
bucket,dde-wwq-ooi
instance,jkl-mno-1-zzz
disk,pqr-stu-10-kuy

Каждая входная строка автоматически разбивается на массив @Fс использованием разделителя -.

Затем он печатает фрагмент массива всех полей, кроме двух последних, повторно -соединенных с -символами.

0
04.01.2021, 15:12
1 ответ

Замените вашу запись в crontab ссылкой на этот скрипт, который обновляет вывод только в случае успехаwgetи , где он возвращает файл не -нулевой длины

#!/bin/bash
#
url='https://remote_file_to_pull.json'
user='username'
pass='password'

target='/local_output_file.json'

if wget --quiet --http-user="$user"--http-password="$pass" -O "$target.tmp" "$url" && [[ -s "$target.tmp" ]]
then
    # Success
    mv -f "$target.tmp" "$target"
else
    # Failure of some sort; you might want to report this
    :
fi
rm -f "$target.tmp"

Кстати. Я надеюсь, что ваш код был иллюстративным, но обычно не рекомендуется записывать файлы непосредственно в корень файловой системы.

0
18.03.2021, 22:38

Теги

Похожие вопросы