Com o Bash, mais conhecido como terminal ou Bourne-Again Shell, está o mestre por trás dos comandos do terminal na maioria das distribuições Linux. Através do terminal, que é o interpretador de comando padrão, suas instruções são transformadas em ações reais dentro do sistema. Através do Bash, que não serve apenas para digitar comandos, é possível criar pequenos scripts. Todas aquelas atividades repetitivas, como ligar o computador ou atualizar o sistema, podem ser automatizadas com scripts Bash para várias finalidades: organizar arquivos, atualizar sistemas, fazer backups, tudo de forma automática. Aprender a utilizar o Bash é uma oportunidade de aprender mais, e não é necessário ser um programador expert. Domine o terminal para tornar a rotina diária mais eficiente. Confira os exemplos de scripts básicos que podem ajudar em diversas finalidades. Eles são apenas um exemplo no vasto mundo dos scripts
Todo script Bash começa com um **shebang** (#!/bin/bash
) na primeira linha, que indica ao sistema qual interpretador usar. Depois, vêm os comandos, que são executados sequencialmente.
Exemplo: Olá Mundo!
#!/bin/bash
# Este é um comentário
echo "Olá, PioLinux! Este é o meu primeiro script Bash."
Para executar, salve como ola_mundo.sh
, dê permissão com chmod +x ola_mundo.sh
e rode com ./ola_mundo.sh
.
Scripts podem transformar suas rotinas mais chatas em algo rápido e automático.
1. Atualizar o Sistema Automaticamente:
Um script para manter seu sistema atualizado, ótimo para agendar com **Cron**.
#!/bin/bash
# Script para atualizar e limpar o sistema (Debian/Ubuntu)
echo "Atualizando listas de pacotes..."
sudo apt update
echo "Realizando upgrade de pacotes..."
sudo apt upgrade -y
echo "Removendo pacotes desnecessários..."
sudo apt autoremove -y
echo "Limpando o cache de pacotes..."
sudo apt clean
echo "Sistema atualizado e limpo!"
2. Backup Simples de Pastas Pessoais:
Compacta seus documentos e imagens em um arquivo com a data atual.
#!/bin/bash
# Script para backup simples de diretórios pessoais
DATA=$(date +%Y-%m-%d_%H-%M-%S)
DIR_BACKUP="$HOME/Backups"
PASTAS_A_COPIAR=("$HOME/Documentos" "$HOME/Imagens")
NOME_ARQUIVO="backup_pessoal_$DATA.tar.gz"
mkdir -p "$DIR_BACKUP"
echo "Iniciando backup das pastas: ${PASTAS_A_COPIAR[@]}"
tar -czvf "$DIR_BACKUP/$NOME_ARQUIVO" "${PASTAS_A_COPIAR[@]}"
echo "Backup concluído! Arquivo: $DIR_BACKUP/$NOME_ARQUIVO"
Para administradores de sistema, Bash é uma ferramenta indispensável para gerenciar usuários, monitorar recursos e automatizar manutenções.
3. Monitorar Uso de Disco e Enviar Alerta:
Verifica o espaço livre em uma partição e envia um alerta se estiver abaixo de um limite.
#!/bin/bash
# Script para monitorar uso de disco e alertar
LIMITE_PERCENTUAL=80 # Alerta se uso for acima de 80%
PARTICAO="/dev/sda1" # Altere para sua partição (ex: /)
EMAIL_ADMIN="seuemail@exemplo.com"
USO=$(df -h "$PARTICAO" | awk 'NR==2 {print $5}' | sed 's/%//g')
if (( USO > LIMITE_PERCENTUAL )); then
echo "ALERTA: Uso de disco na partição $PARTICAO está em $USO%!" | mail -s "Alerta de Disco - Servidor X" "$EMAIL_ADMIN"
echo "Alerta enviado para $EMAIL_ADMIN."
else
echo "Uso de disco em $PARTICAO está em $USO%. Nível normal."
fi
4. Criar Múltiplos Usuários Rapidamente:
Lê uma lista de nomes de um arquivo e cria usuários para cada um.
#!/bin/bash
# Script para criar usuários a partir de uma lista
ARQUIVO_USUARIOS="lista_usuarios.txt"
if [ ! -f "$ARQUIVO_USUARIOS" ]; then
echo "Erro: Arquivo $ARQUIVO_USUARIOS não encontrado."
echo "Crie um arquivo com um nome de usuário por linha."
exit 1
fi
while IFS= read -r USUARIO; do
if [ -n "$USUARIO" ]; then # Garante que a linha não está vazia
echo "Criando usuário: $USUARIO"
sudo useradd -m "$USUARIO"
echo "$USUARIO criado. Por favor, defina a senha para $USUARIO:"
sudo passwd "$USUARIO"
fi
done < "$ARQUIVO_USUARIOS"
echo "Processo de criação de usuários concluído."
Exemplo de lista_usuarios.txt
:
joao
maria
pedro
ana
Scripts Bash também são cruciais para manter a segurança do seu sistema e monitorar atividades.
5. Verificar Portas Abertas e Serviços:
Lista as portas abertas no sistema e os serviços associados, útil para auditoria de segurança.
#!/bin/bash
# Script para listar portas abertas e serviços
echo "Listando portas TCP/UDP abertas e os processos associados:"
echo "---------------------------------------------------------"
sudo netstat -tulpn
echo -e "\nVerificando o status do firewall (UFW):"
echo "-------------------------------------"
sudo ufw status
echo -e "\nProcesso de verificação de portas concluído."
6. Monitorar Tentativas de Login Falhas (SSH):
Analisa logs do SSH para detectar tentativas de login falhas e IPs suspeitos.
#!/bin/bash
# Script para monitorar tentativas de login SSH falhas
ARQUIVO_LOG="/var/log/auth.log" # Para Debian/Ubuntu
# ARQUIVO_LOG="/var/log/secure" # Para CentOS/Fedora
echo "Monitorando tentativas de login SSH falhas nas últimas 24 horas:"
echo "-------------------------------------------------------------"
# Filtra o log por falhas de autenticação SSH nas últimas 24 horas
grep "Failed password" "$ARQUIVO_LOG" | tail -n 50 | awk '{print $11}' | sort | uniq -c | sort -nr
echo -e "\nObservação: Os IPs listados são as origens das tentativas falhas."
Devs podem usar Bash para automatizar tarefas de build, deploy e gerenciamento de ambientes.
7. Servidor HTTP Local Rápido:
Inicia um servidor web Python temporário na porta 8000 para testar seus projetos HTML/CSS/JS.
#!/bin/bash
# Script para iniciar um servidor HTTP local
PORTA=8000
echo "Iniciando servidor HTTP em http://localhost:$PORTA"
echo "Pressione Ctrl+C para parar o servidor."
python3 -m http.server $PORTA
8. Deploy Simples via Rsync/SSH:
Sincroniza seus arquivos de projeto local com um servidor remoto via SSH, ideal para deploy simples.
#!/bin/bash
# Script para deploy simples de projeto web via rsync/SSH
DIR_LOCAL="./public_html/" # Seu diretório de projeto local
USUARIO_REMOTO="usuario_ssh"
IP_SERVIDOR="seu.servidor.com"
DIR_REMOTO="/var/www/html/meu_site/" # Diretório no servidor remoto
echo "Sincronizando arquivos de $DIR_LOCAL para $USUARIO_REMOTO@$IP_SERVIDOR:$DIR_REMOTO"
rsync -avz --delete "$DIR_LOCAL" "$USUARIO_REMOTO@$IP_SERVIDOR:$DIR_REMOTO"
if [ $? -eq 0 ]; then
echo "Deploy realizado com sucesso!"
else
echo "Erro no deploy. Verifique as configurações e conectividade."
fi
Explore o poder do Bash com variáveis, condicionais e laços para scripts mais inteligentes.
9. Calculadora de Linha de Comando:
Um script simples que aceita uma expressão matemática e a calcula usando `bc`.
#!/bin/bash
# Script de calculadora simples
if [ -z "$1" ]; then
echo "Uso: ./calculadora.sh "expressao_matematica""
echo "Exemplo: ./calculadora.sh \"10 + 5 * 2 / 3\""
exit 1
fi
RESULTADO=$(echo "scale=2; $1" | bc -l)
echo "Resultado: $RESULTADO"
10. Criar Álbum de Fotos HTML Simples:
Gera um arquivo HTML com miniaturas de imagens em um diretório.
#!/bin/bash
# Script para criar um álbum de fotos HTML simples
DIR_FOTOS="./minhas_fotos/"
ARQUIVO_HTML="album_fotos.html"
echo "<!DOCTYPE html>" > "$ARQUIVO_HTML"
echo "<html><head><title>Meu Álbum de Fotos</title></head><body>" >> "$ARQUIVO_HTML"
echo "<h1>Minhas Fotos</h1>" >> "$ARQUIVO_HTML"
for FOTO in "$DIR_FOTOS"/*.{jpg,png,gif}; do
if [ -f "$FOTO" ]; then
NOME_FOTO=$(basename "$FOTO")
echo "<p><img src=\"$FOTO\" width=\"300\" alt=\"$NOME_FOTO\"><br>$NOME_FOTO</p>" >> "$ARQUIVO_HTML"
fi
done
echo "</body></html>" >> "$ARQUIVO_HTML"
echo "Álbum de fotos gerado em $ARQUIVO_HTML"
echo "Verifique as imagens para o caminho correto caso não apareçam."
Estes são apenas alguns exemplos do que você pode fazer com scripts Bash. A chave é começar com tarefas simples, entender os comandos básicos e, gradualmente, adicionar mais lógica e complexidade. O terminal é um playground vasto e poderoso!