Boas-vindas a este curso de Scripting! Sou a Gabrielle Ribeiro, instrutora aqui da Alura.
Audiodescrição: Gabrielle se declara como mulher parda. Tem cabelo rosa e liso, um pouco abaixo da altura dos ombros. Veste uma camiseta preta e óculos de grau de armação redonda. No nariz, há dois piercings: um no septo e outro na aba direita; outro na parte inferior central da boca e na sobrancelha esquerda. Ao fundo, há uma parede iluminada nas cores vermelho, roxo e azul.
Se você possui experiência em DevOps e deseja aperfeiçoar suas habilidades na criação de scripts para automação de tarefas, este curso é ideal para você.
Durante o curso, você será capacitado a desenvolver e executar scripts bash, utilizar condicionais e laços de repetição, criar imagens e containers Docker, e fazer o upload dessas imagens no Docker Hub. Todo esse aprendizado será aplicado na prática, através da elaboração de scripts para o projeto Adopet, um site dedicado à adoção de animais.
Para tirar o máximo proveito deste curso, é recomendado que você tenha concluído a formação "Começando em DevOps". Além dos vídeos, você pode aproveitar os recursos adicionais da nossa plataforma, como as atividades, o suporte do fórum e a interação com a nossa comunidade no Discord.
Vamos lá?
Dentro do cenário de DevOps, é frequente o uso de sistemas operacionais Linux, ou mesmo ferramentas que emulam esses sistemas, como o WSL no Windows. Nesses ambientes, é comum empregar o terminal para realizar operações e tarefas diversas.
Apesar disso, às vezes utilizar o terminal para essas tarefas pode se tornar pouco eficiente e cansativo. Para lidar com essa questão, é possível recorrer ao uso de scripts, uma abordagem que permite automatizar e agilizar a execução dessas tarefas de forma mais eficiente.
Neste curso, iremos usar o WSL no Windows, tendo previamente instalado o sistema operacional Ubuntu. Para acessá-lo, basta buscar por "Ubuntu" na barra de pesquisa do Windows e abrir o terminal do WSL. Neste ambiente, é possível executar todos os comandos típicos de um sistema Linux.
Além disso, se você utiliza qualquer sistema operacional baseado em Linux, pode ficar tranquilo, pois as ações realizadas neste curso são compatíveis com sua máquina.
Vamos explorar como os comandos são executados em um terminal Linux.
Para isso, usaremos o comando curl
para verificar o status de um servidor, garantindo assim que uma aplicação que colocamos em produção esteja funcionando corretamente.
Primeiramente, é importante garantir que o curl
está instalado em nossa máquina. Podemos fazer isso executando o comando sudo apt install curl
, que solicitará nossa senha.
sudo apt install curl
Ao executarmos, obtemos a solicitação da senha:
[sudo] password for NomeDaPessoaUsuária:
No meu caso, já o havia instalado, mas talvez em sua máquina essa ferramenta ainda não esteja disponível.
O retorno abaixo foi parcialmente transcrito:
curl is already the newest version (7.81.0-1ubuntu1.15)
Após essa verificação, podemos prosseguir com a execução do nosso comando. Digitamos "Ctrl + L" para limpar o terminal.
Digitamos curl
, em seguida adicionaremos a flag --write-out
para obter uma saída do nosso site. Dentro desta flag, especificaremos que desejamos o código HTTP da página, digitando %{http_code}
entre chaves.
Também vamos adicionar a flag --silent
e --output
, especificando /dev/null
, para que o comando curl
retorne apenas o código HTTP. Se não utilizarmos a flag --silent
e redirecionarmos a saída para /dev/null
, o terminal exibirá um HTML extenso da página, mas desejamos apenas o status HTTP.
curl --write-out %{http_code} --silent --output /dev/null
Vamos começar testando a aplicação Adopet.
Na atividade "Preparando o ambiente", compartilhamos o link desta aplicação, e agora vamos abri-la no navegador no endereço adopet-frontend-cypress.vercel.app
.
Agora, estamos visualizando a aplicação AdoPet, um site dedicado à adoção de animais, onde podemos verificar os pets disponíveis para adoção clicando no botão "Ver pets disponíveis para adoção" na parte central da tela. Esta aplicação está online e qualquer pessoa pode acessá-la utilizando a URL que acabamos de copiar.
adopet-frontend-cypress.vercel.app/home
Retornamos ao terminal.
Adicionamos a URL ao final do comando curl
para especificar que desejamos que ele traga um retorno desse site específico.
curl --write-out %{http_code} --silent --output /dev/null https://adopet-frontend-cypress.vercel.app/home
Ao pressionarmos "Enter", o terminal exibirá o código 200, indicando que a página está funcionando corretamente.
200
Para recapitular os status HTTP, o código 200
significa que tudo está funcionando bem. Existem também outros códigos, como o 500
, que indica um erro interno do servidor, e o 404
, que ocorre quando a página não é encontrada, entre outros.
Agora vamos criar um script que poderemos usar no futuro para verificar se nossa aplicação está funcionando. Copiamos o comando que utilizamos anteriormente utilizando "Ctrl + Shift + C" e abrimos um editor de texto.
No meu caso, usarei o Vim, mas você pode escolher o editor de texto que preferir, como o Nano ou qualquer outro. Daremos um nome ao nosso script: monitoramento-servidor.sh
.
vim monitoramento-servidor.sh
Definimos o nome do nosso script como monitoramento-servidor.sh
. Após isso, pressionamos "Enter" para abrir o editor e a tecla "A" para editar o documento. O início do script incluirá o que chamamos de "shebang".
O shebang é representado pelo símbolo de hashtag (cerquilha) e uma exclamação: #!
. Ele é utilizado para especificar qual interpretador será utilizado para interpretar o código do script.
Quando executamos aquele comando no terminal, usamos o interpretador bash, um dos mais populares em sistemas Linux, embora haja outros interpretadores disponíveis.
Após o shebang, definimos o interpretador que desejamos usar, que no nosso caso é o bash. Para isso, digitamos /bin/bash
.
#!/bin/bash
Se outros interpretadores forem usados, o shebang será diferente. Deixaremos uma atividade para explorar mais esse tema.
Inserimos uma linha em branco e então criamos a variável codigo_http
. Essa é a forma como se cria uma variável em um script bash.
#!/bin/bash
codigo_http
O objetivo é atribuir a essa variável a saída do comando que executamos no terminal.
Para isso, usaremos o sinal de igual e inseriremos o comando que copiamos anteriormente com "Ctrl + Shift + V".
#!/bin/bash
codigo_http=curl --write-out %{http_code} --silent --output /dev/null https://adopet-frontend-cypress.vercel.app/home
No entanto, como se trata de um comando cujo retorno desejamos capturar e armazenar apenas o valor de saída na nossa variável, precisamos envolver esse comando entre cifrões, seguido de parênteses, e ao final do comando, fechamos os parênteses.
#!/bin/bash
codigo_http=$(curl --write-out %{http_code} --silent --output /dev/null https://adopet-frontend-cypress.vercel.app/home)
Pulamos uma linha e exibimos a informação armazenada nessa variável no terminal. Para isso, podemos usar o comando echo
, que funciona como o "print" em outras linguagens de programação. Para acessar o valor armazenado em uma variável em diferentes partes do código, como no comando echo
, utilizamos o sinal de cifrão seguido pelo nome da variável, que é codigo_http
.
#!/bin/bash
codigo_http=$(curl --write-out %{http_code} --silent --output /dev/null https://adopet-frontend-cypress.vercel.app/home)
echo $codigo_http
Podemos clicar em "ESC", digitar ":x" para salvar o nosso arquivo e limpar o terminal.
Em seguida, vamos tentar executar o nosso script com ./monitoramento-servidor.sh
.
./monitoramento-servidor.sh
Recebemos uma mensagem de erro informando que a permissão foi negada.
bash: ./monitoramento-servidor.sh: Permission denied
Para executar um script bash, é necessário conceder permissão de execução usando chmod +x
seguido do nome do script: monitoramento-servidor.sh
. Após conceder permissão, podemos executá-lo com o comando ./monitoramento-servidor.sh
no terminal.
chmod +x monitoramento-servidor.sh
Executamos o comando chmod
. Logo após, executamos:
./monitoramento-servidor.sh
Ao fazer isso, obtemos a saída esperada.
200
Obtemos o mesmo retorno de quando rodamos o comando no terminal. Voltamos para o editor de texto com o comando vim monitoramento-servidor.sh
.
Para recapitular o processo, criamos scripts bash com extensão .sh
. A primeira linha do script contém o shebang para definir o interpretador (bash, neste caso), seguido pelos comandos que desejamos que sejam executados.
Vamos pensar em um cenário específico: estamos integrados em um time de DevOps e recebemos a solicitação de desenvolver um script para monitorar o uso do disco. Essa funcionalidade é essencial para verificar a disponibilidade de espaço em nossas partições e sistemas de arquivos.
Para iniciar o desenvolvimento do script, abrimos o terminal e criamos um arquivo chamado monitoramento-disco.sh
.
vim monitoramento-disco.sh
Usamos o editor de texto Vim para começar a editar o script, adicionando o Shebang #!/bin/bash
no início para definir que se trata de um script em Bash.
#!/bin/bash
Antes de prosseguirmos com a escrita dos comandos do script, é prudente testá-los no terminal. Vamos seguir esse procedimento: fechar o arquivo, salvá-lo com ":x", limpar o terminal e revisar nossa tarefa, que é monitorar o uso de disco em nossa máquina.
No contexto dos sistemas Linux, dispomos de um comando altamente útil para essa finalidade, o df
, que pode ser utilizado com a flag -h
.
df -h
Ele fornece detalhes sobre os sistemas e as partições, incluindo seus tamanhos (Size
), a quantidade de memória utilizada (Used
), a disponibilidade de espaço (Avail
), a porcentagem de uso e o ponto de uso (Use%
) de cada sistema.
Para obter informações específicas da partição C do Windows, C:\
, vamos aplicar um filtro para selecionar apenas a linha desejada.
Linha indicada pela instrutora:
Filesystem | Size | Used | Avail | Use% | Mounted on |
---|---|---|---|---|---|
C:\ | 237G | 216G | 22G | 92% | /mnt/c |
Podemos utilizar o comando Grep
do Linux, que aceita uma string como argumento e realiza essa filtragem para nós.
Grep
Identificamos que a linha referente à partição C:
apresenta um padrão de texto repetido com outra partição que não é relevante para nós. Para resolver isso, podemos procurar por uma única parte dessa linha. Por exemplo, a montagem da nossa partição C:
é representada como /mnt/c
.
Podemos realizar a cópia desse trecho, uma vez que ele é único e específico para nossa necessidade. Para isso, vamos limpar a tela e executar novamente o comando df -h
, concatenando-o com o comando grep
por meio do operador pipe, representado pela barra vertical. Em seguida, digitamos o comando grep
seguido da string que desejamos buscar dentro de todas as informações exibidas pelo df -h
.
df -h | grep /mnt/c
Ao pressionarmos "Enter", observamos que a linha de interesse foi filtrada.
C:\ | 237G | 216G | 22G | 92% | /mnt/c |
---|
Agora, buscamos a porcentagem de uso de disco nessa seção. Temos diversas colunas disponíveis, sendo a quinta coluna a que contém a informação desejada. Para extrair essa informação, podemos utilizar o comando awk
no Linux.
awk
Vamos reunir todos os comandos que já especificamos até agora (df -h | grep /mnt/c
). Digitaremos o operador de pipe (|) novamente e acrescentaremos o comando awk
. Com o awk
, indicamos qual coluna desejamos extrair.
Para isso, usaremos aspas simples, abriremos chaves e dentro delas colocaremos print $5
, fechando as chaves.
df -h | grep /mnt/c | awk '{print $5}'
Essa parte do código determina de forma precisa qual coluna estamos interessados em buscar informações.
Vamos verificar se funcionou. Ao executar o comando, o terminal exibiu os 92%, que era a informação que buscávamos.
92%
Assim, obtivemos os dados sobre o uso do disco com esse comando específico. Agora, vamos copiar esse comando com "Ctrl + Shift + C" e voltar ao nosso script de monitoramento de disco para inseri-lo com vim monitoramento-disco.sh
.
Agora, vamos ativar a edição no editor e criar uma variável chamada uso_disco
. Atribuiremos o resultado desse comando a essa variável, utilizando "Ctrl + Shift + V". É importante lembrar que, como se trata de um comando, precisamos envolvê-lo com $()
.
Na próxima linha, vamos usar o comando echo para exibir a mensagem "Uso de disco em tantos por cento". Para inserir um texto usando o echo
, utilizamos aspas duplas e escrevemos o texto desejado entre essas aspas.
O valor que desejamos mostrar está armazenado na variável uso_disco
. Para acessar esse valor, utilizamos $uso_disco
.
uso_disco=$(df -h | grep /mnt/c | awk '{print $5}')
echo "Uso de disco em $uso_disco"
Agora, podemos salvar nosso script e executá-lo para verificar o resultado.
Lembrando, antes de executar o nosso script, vamos dar permissão para execução com chmod +x monitoramento-disco.sh
. Com a permissão concedida, agora podemos executar o nosso script com ./monitoramento-disco.sh
.
Obtemos a nossa mensagem desejada:
Uso de disco em 92%
Vamos retornar ao editor de texto, limpar o terminal e abrir novamente o script com o comando vim monitoramento-disco.sh
para fazer uma melhoria na organização do código.
Ao utilizar o comando grep
, definimos /mnt/c
como o ponto de montagem. No entanto, é possível que você esteja usando um sistema operacional distinto do meu, ou que seu sistema possui configurações diferentes. Isso implica que a string que você precisa utilizar pode ser distinta da minha.
Para melhorar a legibilidade e reutilização do código, é sugerido extrair essa informação para uma variável separada.
Logo abaixo do Shebang, vamos criar uma variável denominada ponto_montagem
e atribuir a ela a string /mnt/c
. Para isso, utilizamos aspas duplas ao redor da string. Em seguida, podemos remover a string anteriormente usada no comando grep
e substituí-la pela nossa nova variável $ponto_montagem
.
#!/bin/bash
ponto_montagem="/mnt/c"
uso_disco=$(df -h | grep $ponto_montagem | awk '{print $5}')
echo "Uso de disco em $uso_disco"
Após fazer essas alterações, salvamos o script e o executamos para garantir que continua funcionando corretamente.
Uso de disco em 92%
Encerramos esta parte relacionada à verificação do uso de disco. No entanto, foi solicitado que aprimorássemos o script para que ele também criasse logs com essas informações de uso de disco. Esse desenvolvimento será abordado na próxima etapa!
O curso Scripting: automatizando tarefas com Bash e Docker possui 159 minutos de vídeos, em um total de 61 atividades. Gostou? Conheça nossos outros cursos de Automação de processos em DevOps, ou leia nossos artigos de DevOps.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.
Acesso completo
durante 1 ano
Estude 24h/dia
onde e quando quiser
Novos cursos
todas as semanas