◇ OpenCyber Academy
Técnico · Capítulo 4 · Português

Capítulo 4 — Scripts e formatos de dados

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Capítulo 4 — Scripts e formatos de dados

Mapa da aula

Aula 04 publicada. Mapa, exemplo, EX013.

flowchart TD
  N0["4.1 Formatos de dados"]
  N1["Laboratório — Conferência de uma semana de resultado"]
  N2["4.2 Uma verificação de backups"]
  N3["4.3 Dados ruins"]
  N4["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4
  N4 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX013"]

Desenho lógico

flowchart LR
  N0["4.1 Formatos de dados"]
  N1["Laboratório — Conferência de uma semana de resultado"]
  N2["4.2 Uma verificação de backups"]
  N3["4.3 Dados ruins"]
  N4["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX013"]
[4.1 Formatos de dados]
    |
    v
[Laboratório — Conferência de uma semana de resultado]
    |
    v
[4.2 Uma verificação de backups]
    |
    v
[4.3 Dados ruins]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX013]

Objetivos de aprendizagem

Você vai (1) ler exportações em CSV e JSON; (2) escrever um script para conferir os resultados dos backups; (3) tratar dados ruins com segurança.

4.1 Formatos de dados

Os sistemas da Linden exportam dados em formatos diferentes. O appliance de backup grava um arquivo CSV toda noite, com uma linha por clínica: data, nome da clínica, arquivos copiados e status. A exportação de auditoria do sistema de gestão clínica é em JSON, um formato de chaves e valores aninhados. Nadia aprende a ler os dois com a biblioteca padrão do Python. Daniel explica que entender os formatos é uma habilidade técnica central, porque a maioria das verificações de segurança começa lendo a exportação de algum sistema e transformando-a numa resposta clara. Ela guarda arquivos de exemplo de cada formato para testar seus scripts.

Laboratório — Conferência de uma semana de resultados de backup

# Check a week of nightly backup results (synthetic CSV rows: date, practice, files, status).
rows = """2026-03-01,Elmfield,4120,ok
2026-03-02,Elmfield,4133,ok
2026-03-03,Elmfield,0,disk full
2026-03-04,Elmfield,4150,ok
2026-03-05,Elmfield,4161,ok
2026-03-06,Elmfield,0,disk full
2026-03-07,Elmfield,0,disk full
2026-03-01,Norbury,2210,ok
2026-03-02,Norbury,2215,ok
2026-03-03,Norbury,2219,ok
2026-03-04,Norbury,2224,ok
2026-03-05,Norbury,2230,ok
2026-03-06,Norbury,2233,ok
2026-03-07,Norbury,2241,ok
2026-03-07,Westcott,3100""".splitlines()
summary, unreadable = {}, 0
for r in rows:
    f = r.split(",")
    if len(f) != 4: unreadable += 1; continue
    d, p, _, s = f
    ok, n, last = summary.get(p, (0, 0, "never"))
    summary[p] = (ok + (s == "ok"), n + 1, d if s == "ok" else last)
for p, (ok, n, last) in sorted(summary.items()):
    print(f"{p}: {ok}/{n} nights ok, last success {last}" + ("  <-- CHECK" if ok < n else ""))
print(f"unreadable rows: {unreadable}")

Execute com python3 lab_backups.py. Saída verificada:

Elmfield: 4/7 nights ok, last success 2026-03-05  <-- CHECK
Norbury: 7/7 nights ok, last success 2026-03-07
unreadable rows: 1

4.2 Uma verificação de backups

Nadia escreve um script que lê uma semana de resultados sintéticos de backup e relata, para cada clínica, quantas noites tiveram sucesso e a data do último sucesso. O laboratório mostra que a clínica de Elmfield falhou em três noites, incluindo as duas últimas. Grace não tinha percebido porque o appliance só envia e-mail quando há sucesso. O script de Nadia transforma uma falha silenciosa numa falha visível. Grace encontra um disco cheio no servidor de imagens de Elmfield e libera espaço, e o backup da noite seguinte tem sucesso.

4.3 Dados ruins

Daniel pergunta o que acontece se faltar um campo numa linha ou se um status estiver escrito errado. Nadia acrescenta verificações: as linhas com campos faltando são relatadas como ilegíveis, em vez de ignoradas, e qualquer status diferente de "ok" conta como falha. Tratar valores desconhecidos como falhas é mais seguro do que tratá-los como sucesso, porque um script de monitoramento que esconde problemas é pior do que nenhum. Ela também registra no topo do arquivo o formato esperado pelo script, para que os futuros usuários saibam o que ele pressupõe.

Exemplo resolvido

Nadia lê exportações em CSV e JSON, escreve uma verificação de backups que encontra três falhas em Elmfield e trata com segurança as linhas ruins.

Caso sintético. As clínicas e os resultados são sintéticos.

Erros e limites

Os scripts quebram quando os formatos de exportação mudam. Os e-mails de sucesso criam falso conforto.

Exercícios

Síntese

Ler exportações com pequenos scripts torna visíveis as falhas silenciosas, desde que os dados ruins sejam tratados com cautela.

Continue estudando — aula 04 (capítulo 04 de 18)

← Capítulo 03 · Índice das aulas · Capítulo 05 →

Continue para a próxima aula já escrita.