Automatizando Tarefas com Shell Script

Automatizando Tarefas com Shell Script

Já se aventurou pela linha de comando de sistemas Unix ou Linux? Se sua resposta for sim, então provavelmente já ouviu falar de Shell Script. Mas o que seria exatamente e por que é uma habilidade tão valiosa no mercado hoje?

Neste artigo, vamos desvendar o mistério do Shell Script, quais suas vantagens e como começar a usá-lo. Confira!

 O que é Shell Script?

Sabia que comandos executados diversas vezes ao dia para realizar alguma verificação no sistema podem ser automatizados? Os shell scripts são usados exatamente para automatizar tarefas, executar comandos em sequência e realizar várias operações no sistema.

Basicamente, Shell Script é uma forma de programação de scripts que utiliza uma linguagem de comandos do sistema. Pode ser baseada em shell, como o Bash (Bourne Again Shell), para automatizar tarefas, o que permite criar programas  e executar uma série de comandos no terminal de forma sequencial.

Como uma interface que possibilita que os usuários interajam com o sistema operacional, conseguimos executar comandos para gerenciamento do sistema, a exemplo da instalação de pacotes, gerenciamento de usuários, controle de arquivos, entre outros. Tudo isso porque shell realiza as interpretações dos comandos que executamos.

Como usar Shell Script?

Para iniciar seus scripts, é válido ter conhecimentos de Shell, ou seja, saber os comandos básico do linux, como cd para mudar de diretório, ls para listar arquivos, echo para imprimir texto na tela, entre outros.

Para começar a usar o Shell Script, será necessário:

  1. Acesso a um terminal: abra o terminal em seu sistema Unix ou Linux;

  2. Escolher um Shell: os shells principais em sistemas Unix-like são o Bash (Bourne Again Shell), o Zsh, o Dash, o Ksh (KornShell) e o Tcsh, mas existem outros. O Bash é o mais utilizado, sendo geralmente o padrão em sistemas Linux;

  3. Editor de Texto: escolha um editor de texto, como o Vim, Nano ou até o editor de texto padrão do sistema.

  4. Criar o Script: use um editor de texto para criar um arquivo de texto com a extensão “.sh“. Dentro deste arquivo, escreva os comandos que deseja executar, podendo incluir comandos do sistema operacional, variáveis e estruturas de controle de fluxo – como loops, condicionais e funções personalizadas. Exemplo: primeiro_script.sh;

  5. Permissões de Execução: antes de executar o script, dê permissão de execução. Use o comando: chmod +x primeiro_script.sh;

  6. Executar o Script: para executar o script, basta digitar o caminho para o arquivo do script no shell ou usar “./” se estiver no mesmo diretório, isto instruirá o shell a interpretar e executar o arquivo como um script. Exemplo: ./primeiro_script

Vantagens de usar Shell Script:

  • Automatização: shell scripts permitem automatizar tarefas repetitivas, economizando tempo e reduzindo erros humanos;

  • Flexibilidade: podemos usar Shell Script para manipular arquivos, executar programas, processar texto e muito mais;

  • Portabilidade: a maioria dos sistemas Unix e Linux possui um shell compatível com Bash, tornando seus scripts portáteis;

  • Eficiência: a execução por meio da linha de comando é frequentemente mais rápida do que  por meio de interfaces gráficas.

Principais Características do Shell Script:

  • Interpretador: indica ao sistema qual interpretador deve ser usado para executar o script. Ao usar #!/bin/bash estamos dizendo que o Bash (/bin/bash) deve ser usado para interpretar o código;

  • Variáveis: armazenam valores que podem ser usados posteriormente;

  • Estruturas de Controle: como if, for, e while permitem que você crie lógica condicional e loops;

  • Funções: permitem que você organize seu código em blocos reutilizáveis;

  • Comentários: começam com # e são usados para documentar seu código.

Comandos e Funções Principais:

  • echo: imprime texto na tela;

  • read: lê entrada do usuário;

  • if: realiza uma ação com base em uma condição;

  • for e while: criam loops;

  • grep, sed, e awk: ferramentas poderosas para processar texto;

  • mv, cp, e rm: manipulam arquivos e diretórios.

Exemplo de Códigos Shell Script:

  1. Contagem de Arquivos em um Diretório:

#!/bin/bash

echo “Boas vindas ao script: Contagem de Arquivos”

read -p “Insira o caminho do diretório: ” dir

count=$(ls -1 $dir | wc -l)

echo “O diretório $dir contém $count arquivos.”

 

O comando echo imprime uma mensagem de boas-vindas na tela, exibindo o texto entre as aspas duplas.

O comando read lê a entrada do usuário e a armazena na variável dir. A opção -p é usada para exibir uma mensagem ao usuário antes de solicitar a entrada.

A operação count=$(ls -1 $dir | wc -l) lista os arquivos e diretórios no diretório especificado por dir. A opção -1 garante que a lista seja exibida com um item por linha, e o resultado da lista é passado para o comando wc -l, que conta o número de linhas na saída. Desta forma, o resultado é armazenado na variável count usando a notação $(…).

O comandos echo exibe a mensagem que informa ao usuário quantos arquivos estão no diretório. As variáveis $dir e $count são substituídas pelos valores que o usuário inseriu e pelo número de arquivos encontrados.

 

  1. Backup de Arquivos:

#!/bin/bash

echo “Boas vindas ao script: Backup de Arquivos”

read -p “Insira o caminho do diretório para backup: ” src

read -p “Insira o caminho onde o backup será armazenado: ” dest

tar -czf “$dest/backup-$(date +’%Y%m%d’).tar.gz” “$src”

echo “Backup completo em $dest.”

 

 

O comando read, semelhante ao exemplo anterior, solicita ao usuário que insira o caminho desejado, e a entrada do usuário é armazenada em cada variável.

O comando tar cria um arquivo de backup compactado, -c cria um novo arquivo, -z usa a compressão gzip e -f especifica o nome do arquivo de saída.

Em “dest/backup-$(date +’%Y%m%d’).tar.gz” está incluso a variável dest, que contém o caminho para onde o arquivo de backup será armazenado, bem como a data atual no formato “AAAAMMDD“. Isso garante que cada arquivo de backup tenha um nome exclusivo com base na data. Já “$src” é o caminho do diretório que será arquivado para criar o backup.

No final, o script exibe uma mensagem com o echo, informando ao usuário que o backup foi concluído com sucesso e onde o arquivo de backup foi armazenado, usando a variável dest.

 

  1. Renomear Arquivos em Massa:

#!/bin/bash

echo “Boas vindas ao script: Renomeando Arquivos”

read -p “Insira o caminho do diretório: ” dir

for file in “$dir”/*.md; do

mv”$file””${file%.md}_old.md”

done

echo “Arquivos renomeados com sucesso.”

 

 

O comando read funciona da mesma forma armazenando a entrada na variável.

Em for file in “$dir”/*.md; do inicia um loop for que percorre todos os arquivos com a extensão .md no diretório especificado na variável dir. Para cada arquivo encontrado, o loop executará as instruções dentro do bloco.

Em mv “$file” “${file%.md}_old.md, o comando mv é usado para renomear cada arquivo. O $file contém o nome completo do arquivo atual que está sendo processado. A parte ${file%.md} remove a extensão .md do nome do arquivo, deixando apenas o nome base do arquivo para ser processada. Já o _old.md adiciona _old.md ao final do nome base, criando o novo nome do arquivo. O loop com o for continuará a percorrer todos os arquivos .md no diretório até que todos tenham sido renomeados.

Em done, finaliza o bloco do loop com o for.

Após essa conclusão, o echo exibe uma mensagem informando que os arquivos foram renomeados com sucesso.

 

  1. Criar usuário e senha:

#!/bin/bash

echo “Boas vindas ao script: Criando usuário e senha”

read -p “Insira o nome do usuário: ” username

read -sp “Insira a senha do usuário: ” password

echo

password_hash=$(openssl passwd -1 “$password”)

sudo useradd -m -p “$password_hash” -d /home/”$username” -s /bin/bash “$username”

if [ $? -eq 0 ]; then

echo”Usuário $username criado com sucesso!”

else

echo”Ocorreu um erro ao criar o usuário.”

fi

 

A novidade no comando read é a opção “-s“, que é usada para que a senha seja digitada em modo silencioso, ou seja, os caracteres digitados não serão exibidos na tela – funcionalidade bem comum para manter a privacidade. A senha fornecida pelo usuário é armazenada na variável password.

Em password_hash=$(openssl passwd -1 “$password”), o comando openssl passwd gera um hash da senha fornecida pelo usuário. Com o uso do hash, a senha é armazenada de forma mais segura, e o hash gerado é armazenado na variável password_hash.

Em sudo useradd -m -p “$password_hash” -d /home/”$username” -s /bin/bash “$username”, o usuário será criado com as seguintes opções: o sudo para executar o comando com privilégios de superusuário, useradd para adicionar um novo usuário, e o useradd possui algumas opções próprias listadas a seguir.

  • -m essa opção cria o diretório pessoal para o novo usuário;

  • -p “$password_hash” fornece o hash da senha que foi gerado anteriormente;

  • -d /home/”$username” define o diretório pessoal do novo usuário;

  • -s /bin/bash** especifica o shell que o novo usuário usará, neste caso o Bash;

Fazendo parte do comando de adição do usuário, o “$username” é o nome que foi fornecido anteriormente pelo usuário que executa o script.

Em if [ $? -eq 0 ]; then … fi, a estrutura é uma condicional que verifica o código de saída do comando useradd, armazenado na variável $?. Se o código de saída for igual a 0, significa que a criação do usuário foi bem-sucedida, e a mensagem “usuário criado com sucesso” é exibida. Já se o código de saída for diferente de 0, uma mensagem de erro é exibida, indicando um problema durante a criação do usuário.

Conclusão

O Shell Script é uma ferramenta poderosa. A habilidade de criar scripts personalizados usando comandos de shell, variáveis, estruturas de controle e funções possibilita simplificar tarefas repetitivas e criar soluções para cada necessidade.

Não hesite em explorar e experimentar o Shell Script. Essa é uma habilidade valiosa para qualquer usuário de sistemas Unix e Linux, já que oferece uma maneira flexível de lidar com uma variedade de desafios no mundo da linha de comando.

Nossa recomendação para você: agora que já viu como o Shell Script funciona, comece com tarefas simples e, à medida que adquirir mais conhecimento, vá explorando projetos mais complexos. A criatividade é o limite!

 

 

 

Anterior Autenticando terraform na Google Cloud sem compartilhamento de chaves
Próxima Automatização de ambientes com Rundeck

About author

Deborah Melo
Deborah Melo 10 posts

Analista de Infraestrutura | Construtora na 4Linux | LPIC 1 | Graduada em Eng. Elétrica | Apaixonada por tecnologia e ideologias Open Source.

View all posts by this author →

Você pode gostar também

Cloud

Maximize a eficiência da sua infraestrutura com o novo recurso de importação do Terraform

O Terraform pode importar recursos de infraestrutura existentes. Essa funcionalidade permite colocar recursos existentes sob o gerenciamento do Terraform. Isso é muito útil quando estamos iniciando no uso do terraform

Infraestrutura TI

Automatização de ambientes com Rundeck

Por que automatizar seu ambiente? Nos últimos anos, a automação tem crescido como um elemento imperativo em todos os negócios. Independente da área, temos observado um notável aumento no uso

Treinamentos

Curso Especialista em Automação com Ansible: Aprenda na Prática!

Olá, para você que trabalha ou tem interesse na área DevOps! Gostaria de aprender a provisionar de forma automatizada diversos ambientes? Estamos lançando o curso Especialista em Automação com Ansible,