Ошибки в скрипте проверки обновлений (причина: репозитории недоступны)

У меня есть сценарий, который проверяет, доступны ли обновления на моем сервере 14.04, и отправляю мне текстовое сообщение, если это произойдет.

Скрипт bash начинается с:

IFS=';' read updates security_updates < <(/usr/lib/update-notifier/apt-check 2>&1)

А затем тестирует:

if [ $updates != 0 ];
then
…

и позже:

if [ $security_updates != 0 ];
then

Проблема заключается в updates и security_updates должны содержать количество обновлений, таких как 3 и 1. Но иногда первая команда завершается неудачно и возвращает:

E: Unknown Error: '<class 'SystemError'>' (E:Could not open file /var/lib/apt/lists/ubuntu.mirrors.ovh.net_ftp.ubuntu.com_ubuntu_dists_trusty-backports_universe_i18n_Translation-en - open (2: No such file or directory), E:Could not open file /var/lib/apt/lists/ubuntu.mirrors.ovh.net_ftp.ubuntu.com_ubuntu_dists_trusty-backports_restricted_i18n_Translation-en - open (2: No such file or directory), E:Could not open file /var/lib/apt/lists/ubuntu.mirrors.ovh.net_ftp.ubuntu.com_ubuntu_dists_trusty-backports_multiverse_i18n_Translation-en - open (2: No such file or directory), E:Could not open file /var/lib/apt/lists/ubuntu.mirrors.ovh.net_ftp.ubuntu.com_ubuntu_dists_trusty-backports_main_i18n_Translation-en - open (2: No such file or directory), E:Could not open file /var/lib/apt/lists/ubuntu.mirrors.ovh.net_ftp.ubuntu.com_ubuntu_dists_trusty-backports_multiverse_binary-i386_Packages - open (2: No such file or directory), E:Could not open file /var/lib/apt/lists/ubuntu.mirrors.ov
h.net_ftp.ubuntu.com_ubuntu_dists_trusty-backports_universe_binary-i386_Packages - open (2: No such file or directory), 

В результате мой скрипт завершается ошибкой, и cron отправляет мне электронное письмо. Как я могу проверить на наличие ошибок перед проверкой содержимого самих переменных? $? не помогает ...

РЕДАКТИРОВАТЬ:

Я также пытался:

s="${updates}"
size=${#s}
if [[ $size > 3 ]] ;then
  echo "DATA TOO LARGE";
  exit;
fi

В большинстве случаев это не позволяет обнаружить слишком длинную строку ... Иногда я получаю слишком большие данные, иногда я получаю ошибки

line 25: [: too many arguments => это строка первого оператора if line 38: [: !=: unary operator expected => это строка второго оператора if

1
задан 13 January 2015 в 01:06

0 ответов

Другие вопросы по тегам:

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