# Explicador de configuração da CLI do FortiOS

> Cole um bloco de configuração do FortiOS e receba a estrutura em árvore com cada verbo explicado. Ela sinaliza a armadilha que mais custa caro: `set` num campo de múltiplos valores SUBSTITUI a lista inteira, então definir um endereço de origem numa policy que tinha quatro remove três em silêncio. Também detecta blocos não fechados e lembra que `end` é o que aplica. Local e offline.

- Tool: https://ronutz.com/pt-BR/tools/fortios-cli-config-explainer
- Family: Operações e fieldcraft

---

## O que faz

Cole um bloco de configuração do FortiOS e a ferramenta devolve a estrutura em árvore com cada verbo explicado: o que `config`, `edit`, `set`, `unset`, `append`, `next`, `end` e `abort` fazem, e em que nível o bloco está a cada linha. Local e offline; lê estrutura, não semântica.

## A armadilha que ela existe para pegar

**`set` num campo de múltiplos valores substitui a lista inteira.** `set srcaddr "internal-net"` numa policy que tinha quatro endereços de origem a deixa com um — com sucesso, em silêncio, sem que nada na saída mencione isso. O comando que acrescenta é o **`append`**.

A ferramenta avisa em todo `set` contra um campo de lista conhecido, nomeando o campo e a linha. Esse é o hábito mais caro no trabalho de CLI do FortiOS e é invisível num bloco lido casualmente — que é exatamente quando blocos são lidos.

## Mais duas coisas que ela sempre diz

- **`edit` cria o que não encontra.** Um ID de policy digitado errado não produz um erro, produz uma policy.
- **`end` é a única linha que aplica.** `next` fecha uma entrada e permanece na tabela; `abort` fecha e descarta. Um bloco usando `end` onde se queria `next` sai da tabela cedo demais e cada edit restante cai em outro lugar.

Ela também reporta **blocos não fechados**, porque um bloco não fechado não aplicou nada e colar um numa sessão ativa deixa você em algum lugar inesperado.

## O que ela não faz

Não conhece os seus objetos de endereço, as suas policies nem o seu arranjo de VDOMs, e não sabe dizer se um valor faz sentido. Ela responde se o formato do comando faz o que quem digitou provavelmente esperava — que é uma pergunta diferente e muitas vezes mais útil.

Também não tem como saber o que havia num campo antes. Quando ela avisa que um `set` substitui uma lista, **a pergunta que ela está pedindo que você responda é o que aquela lista continha.**

## Standards and references

- [Fortinet - FortiOS CLI reference: using the CLI, command syntax and the config/edit/set/next/end structure](https://docs.fortinet.com/document/fortigate/7.4.0/cli-reference)
- [Fortinet - Firewall policy (FortiOS administration guide)](https://docs.fortinet.com/document/fortigate/7.4.2/administration-guide/656084/firewall-policy)

## Related reading

- [O verbo da CLI do FortiOS que apaga coisas em silêncio](https://ronutz.com/pt-BR/learn/fortios-cli-grammar.md): config, edit, set, next, end — uma gramática pequena com três armadilhas. `set` substitui uma lista inteira, `edit` cria o que não encontra, e `end` é a única linha que aplica.
