Criando um script para mostrar uma notificação quando as atualizações estiverem disponíveis

3

Estou tentando criar um script para ser executado com o crontab. Se houver atualizações disponíveis, o script enviará uma notificação. O script em si é básico e auto-explicativo. O script em si não está me dando nenhum erro, no entanto, na instrução if, apenas a parte "else" funciona. Alguma idéia?

#!/bin/bash
sudo apt update > ~/Desktop/UpdateInfo

update1=$(grep "package can be upgraded" ~/Desktop/UpdateInfo | cut -d' ' -f2,3,4,5)

var1="package can be upgraded."

if [ var1 = update1 ]
    then
        notify-send "Updates are available"
    else
        notify-send "test"
fi
    
por LinuxUSer 10.03.2018 / 15:34

3 respostas

5

Você está comparando a string var1 com a string update1 . Aqueles nunca serão os mesmos. Você quer comparar as variáveis:

if [ "$var1" = "$update1" ]

Claro, tudo pode ser simplificado para:

sudo apt update | grep -q "package can be upgraded" && notify-send "Updates are available"
    
por 10.03.2018 / 15:38
2

Você tem alguns erros de código:

#!/bin/bash
sudo apt update > ~/Desktop/UpdateInfo

update1=$(grep "package can be upgraded" ~/Desktop/UpdateInfo | cut -d' ' -f2,3,4,5)

var1="package can be upgraded."

if [[ "$var1" == "$update1" ]]; then
    notify-send "Updates are available"
else
    notify-send "test"
fi

Você precisa usar $ para expandir suas variáveis.

É absolutamente necessário citar suas variáveis ao usar o teste [ . Tecnicamente não é necessário no teste [[ , mas você deve citar mesmo assim.

    
por 10.03.2018 / 15:37
2

Na distribuição baseada no Debian, você pode usar o pacote pk-update-icon :

Displays an update-notification tray icon

This small tool displays notifications and an icon in the tray area of the panel when package updates are available. It is primarily designed for desktops which do not already have this functionality integrated, such as Xfce.

apt install pk-update-icon

Programar um cron job (um breve atraso é usado para testes propostos.) e, g:

crontab -e

após a seguinte linha:

*/1 * * * *  export DISPLAY=:0 ; /usr/bin/pk-update-icon -d 5 ; sleep 5 ; pkill pk-update-icon
    
por 10.03.2018 / 20:13