Automação com Shell Script.

Bom, como muitos já sabem Shell Script é uma ferramenta muito utilizada por diversos profissionais de TI, seja Administradores de Sistemas, Desenvolvedores, Analistas de Redes, o Bash é muito poderoso e oferece uma gama muito grande de funcionalidades e recursos.

Aqui nesse artigo venho para mostrar de forma básica o uso de scripts para a automação da infraestrutura. Primeiramente, vou publicar as formas de conhecimentos que estão disponíveis no mercado e que inclusive eu utilizei para aprender scripts e depois vou mostrar alguns exemplos de automação.

  • Onde buscar conhecimentos de Shell? Na Udemy e de graça! :-)
Bash

Cursos da Udemy:

Linux Fundamentals for IT Professionals. (https://www.udemy.com/linux-fundamentals-for-it-professionals/)

Intro to Linux Shell Scripting. (Free course) (https://www.udemy.com/linux-shell-scripting-free/)

Conceitos de Programação em Shell Script .(https://www.udemy.com/conceitos-de-programacao-em-shell-script/)

Programação Shell Script — Automatizando Rotinas no Linux. (https://www.udemy.com/programacao-shell-script/)

Livros de Shell Scripts:

Livro: “Programação Shell Linux” — por Julio Cezar Neves.

Livro: “Shell Script Profissional” — por Aurelio Marinho Jargas.

  • Como fazer um cabeçalho objetivo? Isso é MUITO importante!
#!/usr/bin/env bash
#
# ---------------------------------------------------------------- #
# Script Name: atualiza_sistema.sh
# Description: Update the system using apt command.
# Site: https://medium.com/@amaurybsouza
# Linkedin: www.linkedin.com/in/amaurybsouza/
# Written by: Amaury Souza
# Maintenance: Amaury Souza
# ---------------------------------------------------------------- #
# Usage:
# $ ./atualiza_sistema.sh
# ---------------------------------------------------------------- #
# Bash Version:
# Bash 4.4.19
# -----------------------------------------------------------------#
# History: v1.0 17/05/2019, Amaury:
# - Start de program
# - Add (apt clean) command to clean the system
# v1.1 19/05/2019, Amaury:
# - Tested with apt autoremove feature
# v1.2 30/05/2019, Amaury:
# - Add apt list --upgradable command
# -----------------------------------------------------------------#
# Thankfulness:
#
# -----------------------------------------------------------------#

É sempre importante criar um cabeçalho para seus scripts, pois outras pessoas poderão usar o seu código em projetos futuros, e dessa forma, com o cabeçalho criado, mostrando a forma de se usar o script, facilita o trabalho.

Crie um modelo de cabeçalho objetivo, colocando uma breve descrição, o nome do script, como é usado e seu e-mail, Linkedin, assim caso alguém fique com dúvida pode consultar o criador do código.

  • Exemplos básicos de automação com Shell Script:

Eu vou mostrar apenas o corpo do script, sem o cabeçalho, assim não ocupa tanto o tamanho do artigo, mas NÃO ESQUEÇA de ADICIONAR seu cabeçalho ao script.

#!/usr/bin/env bash#CABEÇALHO DO SEU SCRIPT.TIME=1
clear
while true;do
echo " "
echo "SEJA BEM VINDO AO $0 DO UBUNTU!"
echo " "
echo "Escolha uma opção abaixo para começar!

1 - Verificar repositório do sistema
2 - Mostrar atualizações do sistema
3 - Instalar atualizações do sistema
4 - Limpar o sistema
5 - Remover pacotes não necessários
0 - Sair do sistema"
echo " "
echo -n "Opção escolhida: "
read opcao
case $opcao in
1)
echo Verificando o sistema por atualizações...
sleep $TIME
apt update
;;
2)
echo Mostrando as atualizações do sistema...
sleep $TIME
apt list --upgradable
;;
3)
echo Instalando atualizações do sistema...
sleep $TIME
apt upgrade -y
;;
4)
echo Limpando o sistema...
apt clean
apt autoclean
;;
5)
echo Removendo pacotes desnecessários do sistema...
sleep $TIME
apt autoremove -y
;;
0)
echo Saindo do sistema...
sleep $TIME
exit 0
;;
*)
echo Opção inválida, tente novamente!
;;
esac
done

Esse exemplo acima mostra de forma simples como automatizar o processo de atualizações do seu sistema Linux, é sempre bom manter o sistema atualizado, com esse script em mãos, você pode atualizar, verificar as atualizações e limpar seu sistema.

Podemos adicionar esse script na CROM do Linux também, poderia ser feito de outra forma também, eu prefiro ver o que tem de atualização e depois limpar o sistema usando o case.

Agora outro exemplo de script básico para o Apache WebServer:

#!/usr/bin/env bash#CABEÇALHO DO SEU SCRIPT.clear
TIME=2
echo PROGRAMA DE GERENCIAMENTO DO WEBSERVER APACHE
echo " "
echo "Escolha uma opção para gerir o webserver Apache

1 - Iniciar o serviço do Apache
2 - Parar o serviço do Apache
3 - Reiniciar o serviço do Apache
4 - Mostrar status do Apache
0 - Sair do menu"
echo " "
echo -n "Opção escolhida: "
read opcao
case $opcao in
1)
echo Iniciando o serviço do Apache!
sleep $TIME
systemctl start httpd
;;
2)
echo Parando o serviço do Apache!
sleep $TIME
systemctl stop httpd
;;
3)
echo Reiniciando o serviço do Apache
sleep $TIME
systemctl restart httpd
;;
4)
echo Mostrando o status do Apache
sleep $TIME
systemctl status httpd
;;
0)
echo Saindo do menu do Apache!
sleep $TIME
exit 0
;;
*)
echo Opção inválida, digite outra opção!
sleep $TIME
exit 0
;;
esac

Nesse script acima, podemos notar que o foco é o gerenciamento do apache, onde eu utilizo o comando systemctl para iniciar, parar, reiniciar o serviço do apache.

  • Como eu executo um script no Linux?

É necessário primeiro setar a permissão no seu script usando o comando:

chmod +x script_name.sh

Para executar você pode seguir o comando abaixo:

./script_name.sh

  • Exemplo de uso de script usando if/else
#!/bin/bash#CABEÇALHOclear
echo -n "Entre com um arquivo ou diretório existente do sistema: "
read dir
if [ -d $dir ]
then
echo Isso é um diretório!
echo Esse $dir tem um tamanho de: `du -sh $dir`
else
echo Isso não é um diretório
fi
  • Exemplo de uso de script usando o comando case:
#!/usr/bin/env bash#CABEÇALHOclear
TIME=2
resultado=0
echo -n "Digite o valor 1: "
read valor1
echo -n "Digite o valor 2: "
read valor2
echo " "
echo -e "ESCOLHA UMA OPÇÃO ABAIXO PARA CALCULAR!

1 - SOMA
2 - SUBTRAÇÃO
3 - DIVISÃO
4 - SAIR"
echo " "
echo -n "Opção escolhida: "
read opcao
case $opcao in
1)
resultado=`expr $valor1 + $valor2`
;;
2)
resultado=`expr $valor1 - $valor2`
;;
3)
resultado=`expr $valor1 / $valor2`
;;
4)
echo Saindo...
sleep $TIME
exit 0
;;
esac
echo "O resultado é: $resultado"
  • Exemplo de uso de script usando o loop for:
#!/usr/bin/env bash#CABEÇALHOTIME=1
for user in `ls /home/`
do
echo "Os usuários são: $user"
sleep $TIME
done

Eu pretendo escrever mais sobre shell scripts, tanto que ultimamente tenho utilizado muito no meu trabalho e em casa nos laboratórios, esse artigo teve mais o objetivo de compartilhar as formas de conseguir conhecimento, mostrar alguns modelos básicos e quem sabe o pessoal resolva usar mais essa ferramenta incrível.

Passion for DevOps