Chegamos naquele ponto que eu mais gosto. Se você já mexe no terminal, sabe que digitar comandos é rápido, mas repetir o mesmo comando todo santo dia, às 8 da manhã, é pedir para errar. É aqui que o Shell Scripting (Bash) entra para trabalhar por você.
Eu costumo dizer que um script é como uma lista de compras: o Linux vai ler linha por linha e executar tudo o que você pediu, sem reclamar e, o mais importante, sem esquecer de nenhum detalhe técnico que você configuraria no braço.
A tal da "Linha Mágica" (Shebang)
Muita gente começa o script de qualquer jeito, mas na prática, a primeira linha é sagrada. O Shebang (#!) diz ao sistema exatamente quem vai interpretar aquilo. Se você quer Bash, seja explícito:
Bash
#!/bin/bash
# Um comentário aqui sempre ajuda o "você do futuro" a entender o que foi feito
O pulo do gato: Permissões e Execução
No Linux, um arquivo de texto não é um programa só porque você quer. Você precisa dar o "poder" a ele. Já vi muita gente tentando rodar script e dando erro de permissão porque esqueceu do básico:
Bash
chmod +x meu_backup.sh
./meu_backup.sh
Um exemplo que salva pele em produção
Não adianta só dar echo "Olá Mundo". No mundo real, a gente precisa de lógica. Imagine validar se um diretório de logs existe antes de tentar compactar tudo:
Bash
#!/bin/bash
LOG_DIR="/var/log/minha_app"
BACKUP_DEST="/mnt/backups"
DATA=$(date +%Y-%m-%d)
# Se o diretório existe (-d), a gente trabalha. Se não, avisa e para.
if [ -d "$LOG_DIR" ]; then
echo "Iniciando backup dos logs em $DATA..."
tar -czf $BACKUP_DEST/logs_$DATA.tar.gz $LOG_DIR
echo "Backup concluído com sucesso!"
else
echo "Erro: O diretório $LOG_DIR não foi encontrado. Abortando."
exit 1
fi
O Agendador Mestre: Crontab
Automação de verdade é quando você não precisa nem apertar o play. Para isso, usamos o Cron. Se você precisa rodar aquele backup todo domingo às 3 da manhã enquanto está descansando, o crontab -e é seu melhor amigo.
⚠️ Erro Comum: Lembre-se que o Cron não carrega suas variáveis de ambiente da mesma forma que seu terminal. Use sempre caminhos absolutos (ex:
/usr/bin/tarem vez de apenastar) para não ter surpresas.
Por que gastar tempo com isso?
No dia a dia como DevOps, a regra é clara: se você tem que fazer uma tarefa mais de duas vezes, crie um script.
Profissionais que dominam essa automação básica valem ouro. Já usei scripts simples para preparar o terreno para o Ansible em projetos com mais de 500 hosts, usando o sshpass para distribuir chaves e ganhar um tempo generoso. É sobre ser produtivo e menos reativo.
E você, qual é aquela tarefa chata que você ainda faz no braço e que poderia virar um script hoje mesmo?