Cheatsheet

← Voltar para página principal
Scripts Cheatsheet

Guia completo de Scripts Bash para automação e produtividade

📜 O que são Scripts?

📖 Definição

Scripts Bash são arquivos de texto contendo sequências de comandos que podem ser executados automaticamente. São ferramentas poderosas para automação de tarefas repetitivas, administração de sistemas e aumento de produtividade.

💪 Por que aprender?

• Automação de tarefas repetitivas
• Processamento em lote
• Administração de sistemas
• Personalização do ambiente
• Integração com outras ferramentas

🚀 O que você pode fazer?

• Backup e restauração de dados
• Monitoramento de sistemas
• Deploy de aplicações
• Análise de logs
• Configuração de ambientes

💡 Onde você vai usar:
🔧 Automação
Tarefas, Backup
🖥️ Sistemas
Admin, Monitor
DevOps
CI/CD, Deploy
🤖 Modern
Cloud, Containers
Filtro ativo:Todos
Total: 5 categoriasBásico: 1Intermediário: 2Avançado: 2

📝 Scripts Básicos

Use quando: Aprendendo programação shell ou criando scripts simples

📋Variáveis e Input

Básico
#!/bin/bash # Variáveis nome="João" idade=25 echo "Nome: $nome, Idade: $idade"

# Declarando variáveis

Básico
#!/bin/bash # Input do usuário echo "Qual seu nome?" read nome echo "Olá, $nome!"

# Lendo input do usuário

Básico
#!/bin/bash # Argumentos de linha de comando echo "Primeiro argumento: $1" echo "Segundo argumento: $2" echo "Todos os argumentos: $@" echo "Número de argumentos: $#"

# Usando argumentos

Básico
#!/bin/bash # Variáveis especiais echo "PID do script: $$" echo "Código de saída: $?" echo "Nome do script: $0"

# Variáveis especiais

📋Estruturas Condicionais

Básico
#!/bin/bash # If-else idade=18 if [ $idade -ge 18 ]; then echo "Maior de idade" else echo "Menor de idade" fi

# Estrutura if-else

Básico
#!/bin/bash # Case opcao="1" case $opcao in 1) echo "Opção 1 selecionada" ;; 2) echo "Opção 2 selecionada" ;; *) echo "Opção inválida" ;; esac

# Estrutura case

Básico
#!/bin/bash # Operadores de comparação num1=10 num2=20 if [ $num1 -eq $num2 ]; then echo "Iguais" elif [ $num1 -lt $num2 ]; then echo "$num1 é menor que $num2" else echo "$num1 é maior que $num2" fi

# Comparando números

Básico
#!/bin/bash # Comparando strings str1="bash" str2="shell" if [ "$str1" = "$str2" ]; then echo "Strings iguais" else echo "Strings diferentes" fi

# Comparando strings

📋Loops

Básico
#!/bin/bash # For loop for i in {1..5}; do echo "Número: $i" done

# Loop for básico

Básico
#!/bin/bash # For com array frutas=("maçã" "banana" "laranja") for fruta in "${frutas[@]}"; do echo "Fruta: $fruta" done

# Loop com array

Básico
#!/bin/bash # While loop contador=0 while [ $contador -lt 5 ]; do echo "Contador: $contador" contador=$((contador + 1)) done

# Loop while

Básico
#!/bin/bash # Until loop contador=0 until [ $contador -eq 5 ]; do echo "Contador: $contador" contador=$((contador + 1)) done

# Loop until

🤖 Scripts de Automação

Use quando: Automatizando tarefas repetitivas ou manutenção do sistema

📋Backup Automatizado

Intermediário
#!/bin/bash # Script de backup origem="/home/user/documentos" destino="/backup/$(date +%Y%m%d)" mkdir -p "$destino" cp -r "$origem" "$destino" echo "Backup concluído em $destino"

# Backup simples

Intermediário
#!/bin/bash # Backup com tar origem="/home/user/documentos" destino="/backup/documentos_$(date +%Y%m%d).tar.gz" tar -czf "$destino" "$origem" echo "Backup compactado em $destino"

# Backup compactado

Intermediário
#!/bin/bash # Backup incremental origem="/home/user/documentos" destino="/backup" data=$(date +%Y%m%d) find "$origem" -mtime -1 -type f -exec cp {} "$destino/$data/" \; echo "Backup incremental concluído"

# Backup incremental

📋Limpeza de Sistema

Intermediário
#!/bin/bash # Limpar arquivos temporários echo "Limpando arquivos temporários..." rm -rf /tmp/* rm -rf ~/.cache/* echo "Limpeza concluída"

# Limpeza básica

Intermediário
#!/bin/bash # Limpar logs antigos echo "Limpando logs com mais de 30 dias..." find /var/log -name "*.log" -mtime +30 -delete echo "Logs antigos removidos"

# Limpar logs antigos

Intermediário
#!/bin/bash # Limpar pacotes não usados (Debian/Ubuntu) echo "Removendo pacotes não usados..." sudo apt autoremove -y sudo apt autoclean echo "Limpeza de pacotes concluída"

# Limpar pacotes

📋Monitoramento de Recursos

Intermediário
#!/bin/bash # Monitorar uso de disco echo "Uso de disco:" df -h | grep -E "^/dev/"

# Verificar uso de disco

Intermediário
#!/bin/bash # Monitorar uso de memória echo "Uso de memória:" free -h

# Verificar uso de memória

Intermediário
#!/bin/bash # Monitorar processos echo "Top 5 processos por CPU:" ps aux --sort=-%cpu | head -6

# Verificar processos

Intermediário
#!/bin/bash # Alerta de uso de disco limite=90 uso=$(df / | tail -1 | awk '{print $5}' | sed 's/%//') if [ $uso -gt $limite ]; then echo "ALERTA: Uso de disco acima de $limite%" fi

# Alerta de disco

📊 Scripts de Monitoramento

Use quando: Monitorando saúde do sistema, serviços ou recursos

📋Monitoramento de Serviços

Intermediário
#!/bin/bash # Verificar se serviço está rodando servico="nginx" if systemctl is-active --quiet $servico; then echo "$servico está rodando" else echo "$servico está parado" sudo systemctl start $servico fi

# Verificar serviço

Intermediário
#!/bin/bash # Monitorar múltiplos serviços servicos=("nginx" "mysql" "apache2") for servico in "${servicos[@]}"; do if systemctl is-active --quiet $servico; then echo "✓ $servico: ATIVO" else echo "✗ $servico: INATIVO" fi done

# Monitorar vários serviços

Intermediário
#!/bin/bash # Reiniciar serviço se falhar servico="nginx" if ! systemctl is-active --quiet $servico; then echo "Reiniciando $servico..." sudo systemctl restart $servico echo "$servico reiniciado" fi

# Reiniciar serviço

📋Monitoramento de Rede

Intermediário
#!/bin/bash # Testar conectividade host="google.com" if ping -c 1 $host &> /dev/null; then echo "Conectividade com $host: OK" else echo "Conectividade com $host: FALHOU" fi

# Testar ping

Intermediário
#!/bin/bash # Verificar portas abertas porta=80 if netstat -tuln | grep -q ":$porta "; then echo "Porta $porta está aberta" else echo "Porta $porta está fechada" fi

# Verificar porta

Intermediário
#!/bin/bash # Monitorar uso de banda interface="eth0" echo "Monitorando interface $interface..." iftop -i $interface -t -s 10

# Monitorar banda

📋Logs e Alertas

Intermediário
#!/bin/bash # Monitorar erros em log arquivo_log="/var/log/syslog" erros=$(tail -100 $arquivo_log | grep -i "error" | wc -l) echo "Erros encontrados: $erros"

# Contar erros

Intermediário
#!/bin/bash # Alertar por email assunto="Alerta do Sistema" mensagem="O sistema detectou um problema" echo "$mensagem" | mail -s "$assunto" admin@exemplo.com

# Enviar alerta

Intermediário
#!/bin/bash # Monitorar tentativas de login tentativas=$(grep "Failed password" /var/log/auth.log | wc -l) echo "Tentativas de login falhadas: $tentativas"

# Monitorar login

⚙️ Scripts de Processamento

Use quando: Processando textos, arquivos ou dados em lote

📋Processamento de Texto

Avançado
#!/bin/bash # Contar palavras em arquivo arquivo="texto.txt" palavras=$(wc -w < $arquivo) echo "O arquivo tem $palavras palavras"

# Contar palavras

Avançado
#!/bin/bash # Extrair emails de arquivo arquivo="contatos.txt" grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b" $arquivo

# Extrair emails

Avançado
#!/bin/bash # Substituir texto em arquivos find . -name "*.txt" -exec sed -i 's/antigo/novo/g' {} \; echo "Substituição concluída"

# Substituir texto

Avançado
#!/bin/bash # Ordenar e remover duplicados arquivo="lista.txt" sort $arquivo | uniq > ${arquivo}_ordenado.txt echo "Arquivo ordenado e sem duplicados"

# Ordenar e deduplicar

📋Processamento de Arquivos

Avançado
#!/bin/bash # Renomear arquivos em massa contador=1 for arquivo in *.jpg; do mv "$arquivo" "imagem_$contador.jpg" contador=$((contador + 1)) done

# Renomear em massa

Avançado
#!/bin/bash # Converter imagens for arquivo in *.png; do convert "$arquivo" "${arquivo%.png}.jpg" done echo "Conversão concluída"

# Converter imagens

Avançado
#!/bin/bash # Comprimir arquivos diretorio="documentos" tar -czf "${diretorio}_$(date +%Y%m%d).tar.gz" $diretorio echo "Compressão concluída"

# Comprimir arquivos

Avançado
#!/bin/bash # Encontrar arquivos grandes find . -type f -size +100M -exec ls -lh {} \; | sort -k5 -hr echo "Arquivos maiores que 100MB"

# Encontrar arquivos grandes

📋Processamento de Dados

Avançado
#!/bin/bash # Processar CSV arquivo="dados.csv" awk -F, '{sum+=$3} END {print "Média:", sum/NR}' $arquivo

# Calcular média CSV

Avançado
#!/bin/bash # Filtrar dados arquivo="dados.csv" awk -F, '$2 > 50 {print $1, $2}' $arquivo

# Filtrar CSV

Avançado
#!/bin/bash # Gerar relatório echo "Relatório de Vendas - $(date)" > relatorio.txt echo "=========================" >> relatorio.txt cat vendas.csv | awk -F, '{print $1 ": $" $3}' >> relatorio.txt echo "Relatório gerado"

# Gerar relatório

🔒 Scripts de Segurança

Use quando: Implementando medidas de segurança ou analisando vulnerabilidades

⚠️ ⚠️ ATENÇÃO: Scripts de segurança podem afetar o funcionamento do sistema. Teste em ambiente isolado antes de usar em produção.

📋Análise de Segurança

Avançado
#!/bin/bash # Verificar permissões de arquivos críticos arquivos=("/etc/passwd" "/etc/shadow" "/etc/sudoers") for arquivo in "${arquivos[@]}"; do ls -la $arquivo done

# Verificar permissões

Avançado
#!/bin/bash # Encontrar arquivos com permissões perigosas echo "Arquivos world-writable:" find / -type f -perm -002 2>/dev/null | head -10

# Arquivos perigosos

Avançado
#!/bin/bash # Verificar usuários com UID 0 echo "Usuários com privilégios de root:" awk -F: '$3 == 0 {print $1}' /etc/passwd

# Verificar root users

Avançado
#!/bin/bash # Analisar tentativas de invasão echo "Tentativas de SSH falhadas:" grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr

# Tentativas SSH

📋Backup de Segurança

Avançado
#!/bin/bash # Backup de configurações destino="/backup/config_$(date +%Y%m%d)" mkdir -p $destino cp -r /etc $destino/ cp -r /home $destino/ echo "Backup de segurança concluído"

# Backup configs

Avançado
#!/bin/bash # Verificar integridade de arquivos arquivo="importante.txt" md5sum $arquivo > ${arquivo}.md5 echo "Checksum gerado"

# Gerar checksum

Avançado
#!/bin/bash # Verificar integridade arquivo="importante.txt" if md5sum -c ${arquivo}.md5; then echo "Arquivo íntegro" else echo "ARQUIVO ALTERADO!" fi

# Verificar checksum

📋Hardening

Avançado
#!/bin/bash # Desabilitar serviços desnecessários servicos=("telnet" "rsh" "rlogin") for servico in "${servicos[@]}"; do if systemctl is-enabled $servico &> /dev/null; then sudo systemctl disable $servico echo "$servico desabilitado" fi done

# Desabilitar serviços

Avançado
#!/bin/bash # Configurar firewall básico sudo ufw --force reset sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow ssh sudo ufw --force enable echo "Firewall configurado"

# Configurar firewall

Avançado
#!/bin/bash # Atualizar sistema echo "Atualizando sistema..." sudo apt update && sudo apt upgrade -y echo "Sistema atualizado"

# Atualizar sistema

🤝 Contribuindo

Encontrou um erro? Quer melhorar um cheatsheet? Tem uma sugestão? Adoraríamos suas contribuições! Abra uma issue ou submeta um PR.

Gostou do projeto? Apoie o desenvolvimento com um café e ajude a manter tudo open source ☕