Toolkit simples de scripts Bash para operações comuns em Linux: disco, memória, CPU, serviços, portas, DNS, HTTP, SSL, análise de logs e backup de pastas.
A proposta do projeto é mostrar fundamentos de Linux, Bash e troubleshooting operacional com uma abordagem direta:
simples, bem documentado e útil é melhor do que complexo e inacabado.
Em ambientes Linux, tarefas de operação e suporte costumam envolver comandos repetitivos, como:
- verificar se o disco está perto de lotar;
- checar consumo de memória;
- analisar carga de CPU;
- validar se um serviço está ativo;
- testar se uma porta está acessível;
- conferir resolução DNS;
- verificar status HTTP de uma aplicação;
- monitorar expiração de certificado SSL;
- procurar erros em logs;
- criar backups rápidos de diretórios.
O linux-ops-toolkit centraliza essas verificações em scripts reutilizáveis, com saída padronizada e códigos de retorno úteis para automação.
- fundamentos de Linux;
- automação com Bash;
- troubleshooting básico;
- uso de ferramentas como
curl,grep,awk,sed,systemctlejournalctl; - boas práticas de scripts shell;
- documentação clara;
- comandos reproduzíveis com
Makefile; - pensamento operacional voltado a problemas reais.
linux-ops-toolkit/
├── README.md
├── Makefile
├── .gitattributes
├── scripts/
│ ├── check-disk.sh
│ ├── check-memory.sh
│ ├── check-cpu.sh
│ ├── check-service.sh
│ ├── check-port.sh
│ ├── check-dns.sh
│ ├── check-http-status.sh
│ ├── check-ssl-expiration.sh
│ ├── log-analyzer.sh
│ └── backup-folder.sh
├── docs/
│ ├── real-world-scenarios.md
│ ├── script-reference.md
│ └── troubleshooting-guide.md
└── examples/
├── README.md
├── commands.md
├── sample-log.log
├── sample-app/
└── outputs/
Sistema recomendado:
- Linux com Bash;
- ambiente com permissões suficientes para consultar serviços e logs quando necessário.
Dependências usadas pelos scripts:
bashdffreeuptimenprocawksedgrepsortuniqcurlopenssltardatesystemctljournalctldig,hostounslookupncou/dev/tcp, dependendo do ambiente
Nem todos os comandos são necessários para todos os scripts.
Clone o repositório:
git clone https://github.com/rathosops/linux-ops-toolkit.git
cd linux-ops-toolkitDê permissão de execução aos scripts:
chmod +x scripts/*.shOpcionalmente, valide se os scripts respondem corretamente:
make help
make smoke-testOs scripts seguem uma convenção simples inspirada em ferramentas de monitoramento:
| Exit code | Status | Significado |
|---|---|---|
0 |
OK |
Execução bem-sucedida ou estado saudável |
1 |
WARNING |
Algo merece atenção |
2 |
CRITICAL |
Problema crítico ou falha relevante |
3 |
UNKNOWN |
Uso inválido, dependência ausente ou estado indeterminado |
Exemplo de uso em automação:
if ./scripts/check-http-status.sh https://example.com; then
echo "Endpoint is healthy"
else
echo "Endpoint needs attention"
fiVerifica uso de disco dos filesystems montados.
./scripts/check-disk.sh --threshold 80Com Makefile:
make check-disk THRESHOLD=80Verifica uso de memória do servidor.
./scripts/check-memory.sh --threshold 85Com Makefile:
make check-memory MEMORY_THRESHOLD=85Analisa carga de CPU com base no load average e na quantidade de cores.
./scripts/check-cpu.sh --multiplier 1.5Com Makefile:
make check-cpu CPU_MULTIPLIER=1.5Verifica se um serviço systemd está ativo e exibe logs recentes.
./scripts/check-service.sh nginx --logs 10Com Makefile:
make check-service SERVICE=nginx SERVICE_LOGS=10Testa conectividade TCP em uma porta.
./scripts/check-port.sh localhost 5432 --timeout 3Com Makefile:
make check-port HOST=localhost PORT=5432 PORT_TIMEOUT=3Valida resolução DNS de um domínio.
./scripts/check-dns.sh example.com --type ACom Makefile:
make check-dns DOMAIN=example.com DNS_TYPE=AVerifica o status HTTP de uma URL.
./scripts/check-http-status.sh https://example.com --timeout 5Com Makefile:
make check-http URL=https://example.com HTTP_TIMEOUT=5Verifica a expiração de um certificado SSL/TLS.
./scripts/check-ssl-expiration.sh example.com --warning-days 30Com Makefile:
make check-ssl DOMAIN=example.com SSL_WARNING_DAYS=30Analisa um arquivo de log procurando padrões de erro, warning e critical.
./scripts/log-analyzer.sh examples/sample-log.log --top 5Com Makefile:
make analyze-log LOG_FILE=examples/sample-log.log LOG_TOP=5Cria backup compactado de uma pasta.
./scripts/backup-folder.sh examples/sample-app ./backupsDry run:
./scripts/backup-folder.sh examples/sample-app ./backups --dry-runCom Makefile:
make backup SOURCE=examples/sample-app DEST=./backups
make backup-dry-run SOURCE=examples/sample-app DEST=./backupsmake check-disk
make check-memory
make check-cpu
make check-service SERVICE=nginx
make check-port HOST=localhost PORT=80
make check-dns DOMAIN=example.com
make check-http URL=https://example.com
make check-ssl DOMAIN=example.com
make analyze-log LOG_FILE=examples/sample-log.log
make backup SOURCE=examples/sample-app DEST=./backupsEste toolkit pode ser usado para simular situações comuns de operação:
- servidor com disco acima do limite aceitável;
- serviço
nginx,dockeroupostgresqlparado; - aplicação web retornando erro HTTP;
- porta de banco indisponível;
- DNS sem resolver corretamente;
- certificado TLS perto de expirar;
- logs com erros recorrentes;
- backup manual antes de uma alteração.
Mais detalhes estão em:
docs/real-world-scenarios.md
docs/troubleshooting-guide.md
docs/script-reference.md
A pasta examples/outputs/ contém exemplos de saída esperada para cada script:
examples/outputs/check-disk.txt
examples/outputs/check-memory.txt
examples/outputs/check-cpu.txt
examples/outputs/check-service.txt
examples/outputs/check-port.txt
examples/outputs/check-dns.txt
examples/outputs/check-http-status.txt
examples/outputs/check-ssl-expiration.txt
examples/outputs/log-analyzer.txt
examples/outputs/backup-folder.txt
Os scripts seguem um padrão simples:
#!/usr/bin/env bash;set -Eeuo pipefail;- variáveis entre aspas;
- validação de argumentos;
- validação de dependências;
- função
usage; - função
main; - mensagens de status padronizadas;
- códigos de saída consistentes.
MIT.