Erros no script de verificação de atualização (causa: repositórios não disponíveis)

1

Eu tenho um script que testa se as atualizações no meu servidor 14.04 estão disponíveis e me envia uma mensagem de texto se isso acontecer.

O script bash começa com:

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

E depois testa:

if [ $updates != 0 ];
then
…

e mais tarde:

if [ $security_updates != 0 ];
then

O problema é updates e security_updates devem conter o número de atualizações como 3 e 1 . Mas às vezes, o primeiro comando falha e retorna:

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), 

Como resultado, meu script falha e o cron me envia um e-mail. Como posso testar erros antes de testar o conteúdo das próprias variáveis? $? não ajuda…

EDITAR:

Eu também tentei:

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

Na maioria das vezes, isso não detecta que a string é muito longa ... Às vezes, fico com dados muito grandes, às vezes recebo os erros

line 25: [: too many arguments = > essa é a linha da primeira declaração if line 38: [: !=: unary operator expected = > essa é a linha da segunda instrução if

    
por Adeline 05.01.2015 / 17:56

0 respostas