Skip to content

rathosops/linux-ops-toolkit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

linux-ops-toolkit

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.


O problema que este projeto resolve

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.


O que este projeto demonstra

  • fundamentos de Linux;
  • automação com Bash;
  • troubleshooting básico;
  • uso de ferramentas como curl, grep, awk, sed, systemctl e journalctl;
  • boas práticas de scripts shell;
  • documentação clara;
  • comandos reproduzíveis com Makefile;
  • pensamento operacional voltado a problemas reais.

Estrutura do projeto

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/

Requisitos

Sistema recomendado:

  • Linux com Bash;
  • ambiente com permissões suficientes para consultar serviços e logs quando necessário.

Dependências usadas pelos scripts:

  • bash
  • df
  • free
  • uptime
  • nproc
  • awk
  • sed
  • grep
  • sort
  • uniq
  • curl
  • openssl
  • tar
  • date
  • systemctl
  • journalctl
  • dig, host ou nslookup
  • nc ou /dev/tcp, dependendo do ambiente

Nem todos os comandos são necessários para todos os scripts.


Instalação

Clone o repositório:

git clone https://github.com/rathosops/linux-ops-toolkit.git
cd linux-ops-toolkit

Dê permissão de execução aos scripts:

chmod +x scripts/*.sh

Opcionalmente, valide se os scripts respondem corretamente:

make help
make smoke-test

Status e códigos de saída

Os 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"
fi

Scripts disponíveis

check-disk.sh

Verifica uso de disco dos filesystems montados.

./scripts/check-disk.sh --threshold 80

Com Makefile:

make check-disk THRESHOLD=80

check-memory.sh

Verifica uso de memória do servidor.

./scripts/check-memory.sh --threshold 85

Com Makefile:

make check-memory MEMORY_THRESHOLD=85

check-cpu.sh

Analisa carga de CPU com base no load average e na quantidade de cores.

./scripts/check-cpu.sh --multiplier 1.5

Com Makefile:

make check-cpu CPU_MULTIPLIER=1.5

check-service.sh

Verifica se um serviço systemd está ativo e exibe logs recentes.

./scripts/check-service.sh nginx --logs 10

Com Makefile:

make check-service SERVICE=nginx SERVICE_LOGS=10

check-port.sh

Testa conectividade TCP em uma porta.

./scripts/check-port.sh localhost 5432 --timeout 3

Com Makefile:

make check-port HOST=localhost PORT=5432 PORT_TIMEOUT=3

check-dns.sh

Valida resolução DNS de um domínio.

./scripts/check-dns.sh example.com --type A

Com Makefile:

make check-dns DOMAIN=example.com DNS_TYPE=A

check-http-status.sh

Verifica o status HTTP de uma URL.

./scripts/check-http-status.sh https://example.com --timeout 5

Com Makefile:

make check-http URL=https://example.com HTTP_TIMEOUT=5

check-ssl-expiration.sh

Verifica a expiração de um certificado SSL/TLS.

./scripts/check-ssl-expiration.sh example.com --warning-days 30

Com Makefile:

make check-ssl DOMAIN=example.com SSL_WARNING_DAYS=30

log-analyzer.sh

Analisa um arquivo de log procurando padrões de erro, warning e critical.

./scripts/log-analyzer.sh examples/sample-log.log --top 5

Com Makefile:

make analyze-log LOG_FILE=examples/sample-log.log LOG_TOP=5

backup-folder.sh

Cria backup compactado de uma pasta.

./scripts/backup-folder.sh examples/sample-app ./backups

Dry run:

./scripts/backup-folder.sh examples/sample-app ./backups --dry-run

Com Makefile:

make backup SOURCE=examples/sample-app DEST=./backups
make backup-dry-run SOURCE=examples/sample-app DEST=./backups

Exemplos rápidos com Makefile

make 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=./backups

Cenários de uso real

Este toolkit pode ser usado para simular situações comuns de operação:

  • servidor com disco acima do limite aceitável;
  • serviço nginx, docker ou postgresql parado;
  • 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

Exemplos de saída

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

Boas práticas aplicadas

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.

Licença

MIT.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors