Como iniciar o aplicativo ou o script após a atualização do sistema

3

Gostaria de iniciar meu script depois ou durante todas as atualizações do Ubuntu. Por exemplo:

Se eu fizer o comando sudo apt-get upgrade, quero iniciar meu script após a atualização bem-sucedida. O mesmo se eu fizer atualização através do Software Updater. É possível?

    
por Peter Maciejko 26.04.2015 / 15:48

2 respostas

2

Como iniciar o aplicativo ou o script após o sistema upgrade

Fique atento às alterações em /var/log/apt/history.log :

sudo inoticoming /var/log/apt/ upgrade_success {} \;

Script upgrade_success :

#!/bin/bash


if [ $1 == "history.log" ]
then

    echo "Changes in \"/var/log/apt/history.log\""

    if [ ! -f "/tmp/upgrade_success_last_run" ] || [ $(stat -c %Y "/tmp/upgrade_success_last_run") -lt $(date "+%s") ]
    then
        # look for changes since the last run
        # of this script ("upgrade_success")
        # in "/var/log/apt/history.log"
        # and make what you want.
    fi

    touch /tmp/upgrade_success_last_run

fi

Como iniciar o aplicativo ou o script após o sistema atualizar

Você escreve o seguinte:

% bl0ck_qu0te%

Crie este arquivo:

/etc/apt/apt.conf.d/16my-script

e adicione esta linha:

APT::Update::Post-Invoke-Success {"<path_to_your_script> 2>/dev/null || true";};

Infelizmente, não há como fazer o mesmo para a atualização, por exemplo:

APT::Upgrade::Post-Invoke-Success {"<path_to_your_script> 2>/dev/null || true";};

OR

No arquivo /etc/apt/apt.conf.d/15update-stamp

você pode encontrar esta linha:

APT::Update::Post-Invoke-Success {"touch /var/lib/apt/periodic/update-success-stamp 2>/dev/null || true";};

Portanto, você pode observar as alterações do arquivo /var/lib/apt/periodic/update-success-stamp . Após qualquer comando update , mesmo através do Software Updater , a data de modificação deste arquivo é a data da última atualização bem-sucedida .

Assista a pasta /var/lib/apt/periodic/ com inoticoming :

sudo inoticoming /var/lib/apt/periodic/ upgrade {} \;

Script upgrade :

#!/bin/bash

if [ $1 == "update-success-stamp" ]
then
    sudo apt-get upgrade
fi

E também aqui: Infelizmente, não há como fazer o mesmo para a atualização, por exemplo:

APT::Upgrade::Post-Invoke-Success {"touch /var/lib/apt/periodic/upgrade-success-stamp 2>/dev/null || true";};

e observe as alterações do arquivo /var/lib/apt/periodic/upgrade-success-stamp .

    
por A.B. 26.04.2015 / 16:25
1

Você pode fazer isso adicionando um say upgrade alias a ~/.bashrc e executando o alias para executar a atualização:

  1. Marque seu script como executável: chmod +x <path_to_script>

* < path_to_script > = caminho para o script que você deseja executar

  1. Adicione um upgrade alias a ~/.bashrc : <<< "alias upgrade='sudo apt-get upgrade && <path_to_script>'" tee -a ~/.bashrc

* < path_to_script > = caminho para o script que você deseja executar

  1. Atualizar ~/.bashrc : . ~/.bashrc

Dessa forma, toda vez que você executar upgrade both sudo apt-get upgrade e seu script for executado, o script será exibido somente após o sucesso de sudo apt-get upgrade .

    
por kos 26.04.2015 / 16:34