Templates de Scripts
Templates Básicos
Script Base
#!/bin/bash
#
# Nome: script_base.sh
# Descrição: Template básico para scripts Bash
# Autor: Seu Nome
# Data: YYYY-MM-DD
# Configurações
set -euo pipefail
IFS=$'\n\t'
# Variáveis
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
LOG_FILE="${SCRIPT_DIR}/script.log"
# Funções
log() {
local msg="[$(date +'%Y-%m-%d %H:%M:%S')] $1"
echo "$msg" | tee -a "$LOG_FILE"
}
cleanup() {
log "Limpando recursos..."
# Adicione código de limpeza aqui
}
# Tratamento de erros
trap cleanup EXIT
trap 'log "Erro na linha $LINENO. Comando: $BASH_COMMAND"' ERR
# Código principal
main() {
log "Iniciando script..."
# Seu código aqui
log "Script finalizado."
}
main "$@"
Script de Backup
#!/bin/bash
#
# Nome: backup.sh
# Descrição: Template para script de backup
# Configurações
SOURCE_DIR="/caminho/origem"
BACKUP_DIR="/caminho/backup"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="backup_${DATE}.tar.gz"
# Criar backup
backup() {
tar -czf "${BACKUP_DIR}/${BACKUP_FILE}" "$SOURCE_DIR"
}
# Limpar backups antigos
cleanup_old() {
find "$BACKUP_DIR" -name "backup_*.tar.gz" -mtime +7 -delete
}
# Executar
backup
cleanup_old
Script de Monitoramento
#!/bin/bash
#
# Nome: monitor.sh
# Descrição: Template para monitoramento
# Configurações
THRESHOLD_CPU=80
THRESHOLD_MEM=90
LOG_FILE="/var/log/monitor.log"
# Funções de monitoramento
check_cpu() {
cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d. -f1)
if [ "$cpu_usage" -gt "$THRESHOLD_CPU" ]; then
echo "ALERTA: CPU em $cpu_usage%"
fi
}
check_memory() {
mem_usage=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
if [ "${mem_usage%.*}" -gt "$THRESHOLD_MEM" ]; then
echo "ALERTA: Memória em $mem_usage%"
fi
}
# Loop principal
while true; do
check_cpu
check_memory
sleep 60
done
Templates Avançados
API Client
#!/bin/bash
#
# Nome: api_client.sh
# Descrição: Template para cliente API
# Configurações
API_URL="https://api.exemplo.com"
API_TOKEN="seu_token"
# Funções API
api_get() {
local endpoint="$1"
curl -s -H "Authorization: Bearer $API_TOKEN" \
"${API_URL}${endpoint}"
}
api_post() {
local endpoint="$1"
local data="$2"
curl -s -X POST \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
-d "$data" \
"${API_URL}${endpoint}"
}
# Uso
response=$(api_get "/users")
echo "$response" | jq '.'
Parser de Logs
#!/bin/bash
#
# Nome: log_parser.sh
# Descrição: Template para análise de logs
# Configurações
LOG_FILE="/var/log/app.log"
PATTERN='ERROR|WARN'
OUTPUT_FILE="analysis.txt"
# Funções de análise
analyze_logs() {
echo "=== Análise de Logs ===" > "$OUTPUT_FILE"
echo "Data: $(date)" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
echo "Erros encontrados:" >> "$OUTPUT_FILE"
grep -E "$PATTERN" "$LOG_FILE" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
echo "Sumário:" >> "$OUTPUT_FILE"
grep -E "$PATTERN" "$LOG_FILE" | awk '{print $1}' | sort | uniq -c >> "$OUTPUT_FILE"
}
# Executar
analyze_logs
Gerenciador de Serviços
#!/bin/bash
#
# Nome: service_manager.sh
# Descrição: Template para gerenciamento de serviços
# Configurações
SERVICES=("nginx" "mysql" "redis")
LOG_DIR="/var/log/services"
# Funções
check_service() {
local service="$1"
systemctl is-active "$service" >/dev/null 2>&1
}
restart_service() {
local service="$1"
systemctl restart "$service"
}
log_status() {
local service="$1"
local status="$2"
echo "[$(date)] $service: $status" >> "${LOG_DIR}/status.log"
}
# Loop principal
for service in "${SERVICES[@]}"; do
if ! check_service "$service"; then
log_status "$service" "DOWN - Tentando reiniciar"
restart_service "$service"
sleep 5
if check_service "$service"; then
log_status "$service" "RECUPERADO"
else
log_status "$service" "FALHA NA RECUPERAÇÃO"
fi
else
log_status "$service" "OK"
fi
done
Dicas de Uso
Personalização
Ajuste variáveis e configurações
Modifique funções conforme necessidade
Adicione logs específicos
Boas Práticas
Mantenha documentação atualizada
Use funções para organizar código
Implemente tratamento de erros
Segurança
Valide entradas
Use permissões adequadas
Proteja dados sensíveis
14 abril 2025