Básico - Tutorial em Shell Script para automação de atualização do Kubuntu via terminal

Estou aprendendo shell script e resolvi compartilhar com vocês um mini projeto para realizar a atualização do Kubuntu ou de alguma derivação de Ubuntu que utilize o Konsole como terminal.

Aos interessados, sintam-se à vontade para fazerem o que julgarem necessário para adaptar o código às suas necessidades pessoais

Este código é um exemplo de um shell script em bash que automatiza o processo de atualização de um sistema Linux. Vou explicar os principais elementos do código e os motivos pelos quais eles foram incluídos.


  1. Esta linha é chamada de shebang e informa ao sistema operacional que este é um script bash. Ela é necessária no início de todos os scripts bash.
#!/bin/bash

  1. Esta linha inicia um terminal Konsole para executar o restante do script.
konsole --noclose --hold -e /bin/bash -c '

  1. Aqui, definimos algumas variáveis para controlar as cores do texto no terminal. Isso é útil para destacar mensagens importantes.
TEXT_RESET="\e[0m"
TEXT_YELLOW="\e[0;33m"
TEXT_RED_B="\e[1;31m"

  1. Esta é uma função chamada print_yellow_message, que é usada para imprimir mensagens em amarelo no terminal. Ela recebe uma mensagem como argumento e exibe a mensagem em amarelo por 1 segundo.
print_yellow_message() {
    echo -e $TEXT_YELLOW
    echo -e "$1"
    echo -e $TEXT_RESET
    sleep 1
}

  1. Aqui, as mensagens informativas são exibidas usando a função print_yellow_message. Isso ajuda a informar o usuário sobre o que o script está fazendo.
print_yellow_message "Atualizador do Sistema - Versão 2.0"
print_yellow_message "Este script automatiza as atualizações do sistema em seu ambiente Linux. Por favor, forneça a senha sudo quando solicitado."

  1. Essas linhas atualizam o APT, que é o sistema de gerenciamento de pacotes do Debian e distribuições relacionadas. O comando apt-get update atualiza a lista de pacotes disponíveis.
print_yellow_message "Iniciando atualização do APT..."
sudo apt-get update

  1. Esta linha executa uma atualização distributiva do APT, que atualiza os pacotes instalados. A atualização distributiva pode incluir modificações mais significativas do sistema.
print_yellow_message "Iniciando atualização distributiva do APT..."
sudo apt-get dist-upgrade

  1. Aqui, o script realiza uma atualização adicional do APT para garantir que todos os pacotes estejam na versão mais recente.
print_yellow_message "Iniciando atualização do APT..."
sudo apt-get upgrade

  1. Essas linhas atualizam o sistema de empacotamento SNAP, que é uma tecnologia de empacotamento de aplicativos.
print_yellow_message "Iniciando atualização do SNAP..."
sudo snap refresh

  1. Estas linhas atualizam os aplicativos empacotados com Flatpak, que é outra tecnologia de empacotamento de aplicativos.
print_yellow_message "Iniciando atualização do Flatpak..."
sudo flatpak upgrade

  1. Aqui, o script remove automaticamente pacotes que não são mais necessários, economizando espaço em disco.
print_yellow_message "Removendo automaticamente pacotes do APT..."
sudo apt-get autoremove

  1. Estas linhas removem automaticamente pacotes Flatpak em desuso, liberando espaço.
print_yellow_message "Removendo automaticamente pacotes Flatpak em desuso..."
flatpak uninstall --unused

  1. Este bloco verifica se uma reinicialização é necessária. Se um arquivo chamado /var/run/reboot-required existe, então o sistema precisa ser reiniciado.
if [ -f /var/run/reboot-required ]; then
    echo -e $TEXT_RED_B
    echo "Reinicialização necessária!"
    echo -e $TEXT_RESET

  1. Neste trecho, o script pergunta ao usuário se deseja reiniciar o computador. Ele aguarda uma resposta do usuário, e se o usuário responder “Y” ou “y,” o script reinicia o sistema usando sudo reboot. Se o usuário responder “N” ou “n,” o script sai.
while true; do
    read -p "Deseja reiniciar o computador agora? [Yy/Nn]: " yn
    case "$yn" in
        [Yy]* ) sudo reboot; break;;
        [Nn]* ) exit;;
        * ) echo "Por favor, responda com 'Y' ou 'N'.";;
    esac
done

Esse é um exemplo de script bastante útil para automatizar a atualização de um sistema Linux que utiliza Konsole como terminal. Também serve como um bom exemplo para iniciantes entenderem a construção básica de um shell script em bash, incluindo a definição de variáveis, a criação de funções, a execução de comandos do sistema e a interação com o usuário.

Por fim, segue uma versão completa do script descrito anteriormente. Caso seu interesse seja apenas na utilização, abra um editor de texto como o Kate e cole o código na íntegra. Selecione a opção “Salvar Como” e defina um nome para o arquivo, finalizando com “.sh” . Logo após, clique com o botão direito do mouse e selecione a opção de executar como aplicativo ou uma similar disponível na sua distribuição.

Aqui está o código completo:


#!/bin/bash

konsole --noclose --hold -e /bin/bash -c '
TEXT_RESET="\e[0m"
TEXT_YELLOW="\e[0;33m"
TEXT_RED_B="\e[1;31m"

# Função para exibir uma mensagem em amarelo e aguardar um segundo
print_yellow_message() {
    echo -e $TEXT_YELLOW
    echo -e "$1"
    echo -e $TEXT_RESET
    sleep 1
}

# Cabeçalho informativo
print_yellow_message "Atualizador do Sistema - Versão 2.0"
print_yellow_message "Este script automatiza as atualizações do sistema em seu ambiente Linux. Por favor, forneça a senha sudo quando solicitado."

# Atualização do APT
print_yellow_message "Iniciando atualização do APT..."
sudo apt-get update

# Atualização distributiva do APT
print_yellow_message "Iniciando atualização distributiva do APT..."
sudo apt-get dist-upgrade

# Atualização do APT
print_yellow_message "Iniciando atualização do APT..."
sudo apt-get upgrade

# Atualização do SNAP
print_yellow_message "Iniciando atualização do SNAP..."
sudo snap refresh

# Atualização do Flatpak
print_yellow_message "Iniciando atualização do Flatpak..."
sudo flatpak upgrade

# Remoção automática de pacotes do APT
print_yellow_message "Removendo automaticamente pacotes do APT..."
sudo apt-get autoremove

# Remoção automática de pacotes Flatpak
print_yellow_message "Removendo automaticamente pacotes Flatpak em desuso..."
flatpak uninstall --unused

# Verifica se a reinicialização é necessária
if [ -f /var/run/reboot-required ]; then
    echo -e $TEXT_RED_B
    echo "Reinicialização necessária!"
    echo -e $TEXT_RESET

    # Pergunta ao usuário se deseja reiniciar
    while true; do
        read -p "Deseja reiniciar o computador agora? [Yy/Nn]: " yn
        case "$yn" in
            [Yy]* ) sudo reboot; break;;
            [Nn]* ) exit;;
            * ) echo "Por favor, responda com 'Y' ou 'N'.";;
        esac
    done
fi
'

Um abraço!

5 curtidas

Parabéns pela iniciativa.

2 curtidas

Se quiser automatizar ainda mais, basta usar o parâmetro -y para o apt não perguntar se deseja fazer a operação.

1 curtida

Nobre, muito obrigado pelo elogio! Me motiva a seguir no aprendizado. Abraço!

Obrigado pela dica e ensinamento! Me motiva a seguir no aprendizado. Abraço!

1 curtida