O Bash (Bourne-Again SHell) é o interpretador de comandos padrão na maioria das distribuições Linux. Com ele, você pode criar scripts: pequenos programas que automatizam tarefas repetitivas, encadeiam comandos complexos e simplificam sua vida no terminal. Se você quer ser mais produtivo e eficiente no Linux, aprender Bash é um passo fundamental. Vamos mergulhar em scripts para diversas finalidades!
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!