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.
- 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
- Esta linha inicia um terminal Konsole para executar o restante do script.
konsole --noclose --hold -e /bin/bash -c '
- 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"
- 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
}
- 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."
- 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
- 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
- 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
- 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
- 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
- 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
- Estas linhas removem automaticamente pacotes Flatpak em desuso, liberando espaço.
print_yellow_message "Removendo automaticamente pacotes Flatpak em desuso..."
flatpak uninstall --unused
- 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
- 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!