netmiko-ssh-automation
Faz seu agente automatizar o acesso a dispositivos de rede via SSH. Ele coleta informações e faz alterações seguras de configuração. É útil para gerenciar redes de forma confiável e segura.
O que ela faz
Esta ferramenta ajuda a automatizar tarefas em equipamentos de rede como roteadores e switches usando Python. Ela permite coletar informações de forma segura ou fazer alterações controladas nas configurações.
Quando usar
- ✓Coletar informações de comandos como 'show' em vários dispositivos.
- ✓Criar um script simples para verificar configurações de rede.
- ✓Adicionar segurança e tratamento de erros em scripts de rede.
Exemplo do que pedir para a IA
“Colete o status da interface de rede de todos os roteadores.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
O código se conecta aos dispositivos de rede usando um protocolo seguro (SSH), executa comandos e pode processar as respostas. Ele inclui medidas de segurança para evitar problemas.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add affaan-m/ECC --skill netmiko-ssh-automationOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/skills/netmiko-ssh-automation/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Automação SSH com Netmiko
Use esta habilidade ao escrever ou revisar automação Python que se conecta a dispositivos de rede com Netmiko. Mantenha o caminho padrão como somente leitura; alterações de configuração precisam de uma janela de alteração separada, revisão por pares e plano de reversão.
Quando Usar
- Coletando saída de comando
showem roteadores, switches ou firewalls. - Construindo um pequeno script de auditoria para evidências de interface, roteamento ou configuração.
- Adicionando tempos limite e tratamento de exceções a scripts SSH de rede.
- Analisando a saída de comando com TextFSM quando um template existe.
- Revisando a automação antes que ela toque em dispositivos de produção.
Padrões de Segurança
- Comece com coleta
send_command()somente leitura. - Mantenha o inventário pequeno e explícito; não escaneie faixas inteiras de endereços.
- Use variáveis de ambiente, um cofre ou
getpass; nunca codifique credenciais. - Defina tempos limite de conexão e leitura.
- Limite a concorrência para que dispositivos mais antigos não fiquem sobrecarregados.
- Exija uma flag explícita do operador antes
send_config_set(). - Não chame
save_config()até que a alteração tenha sido verificada e aprovada.
Padrão de Conexão Somente Leitura
import os
from getpass import getpass
from netmiko import ConnectHandler
from netmiko.exceptions import (
NetmikoAuthenticationException,
NetmikoTimeoutException,
ReadTimeout,
)
device = {
"device_type": "cisco_ios",
"host": "192.0.2.10",
"username": os.environ.get("NETMIKO_USERNAME") or input("Username: "),
"password": os.environ.get("NETMIKO_PASSWORD") or getpass("Password: "),
"secret": os.environ.get("NETMIKO_ENABLE_SECRET"),
"conn_timeout": 10,
"auth_timeout": 20,
"banner_timeout": 15,
"read_timeout_override": 30,
}
try:
with ConnectHandler(**device) as conn:
if device.get("secret") and not conn.check_enable_mode():
conn.enable()
output = conn.send_command("show ip interface brief", read_timeout=30)
print(output)
except NetmikoAuthenticationException:
print("Authentication failed")
except NetmikoTimeoutException:
print("SSH connection timed out")
except ReadTimeout:
print("Command read timed out")
Use endereços de placeholder de intervalos de documentação em exemplos. Mantenha o inventário real em um arquivo local ignorado ou em um sistema gerenciado por segredos.
Coleta em Lote
from concurrent.futures import ThreadPoolExecutor, as_completed
from typing import Any
def collect_show(device: dict[str, Any], command: str) -> dict[str, Any]:
host = device["host"]
try:
with ConnectHandler(**device) as conn:
output = conn.send_command(command, read_timeout=45)
return {"host": host, "ok": True, "output": output}
except (NetmikoAuthenticationException, NetmikoTimeoutException, ReadTimeout) as exc:
return {"host": host, "ok": False, "error": type(exc).__name__}
results = []
with ThreadPoolExecutor(max_workers=8) as pool:
futures = [pool.submit(collect_show, device, "show version") for device in devices]
for future in as_completed(futures):
results.append(future.result())
Mantenha max_workers baixo, a menos que o parque de dispositivos e os sistemas AAA sejam conhecidos por
lidar com um volume maior de conexões.
Análise Estruturada
Netmiko pode pedir ao TextFSM, TTP ou Genie para analisar a saída de comandos suportados. Trate a saída do parser como uma otimização, não como o único caminho de evidência.
with ConnectHandler(**device) as conn:
parsed = conn.send_command(
"show ip interface brief",
use_textfsm=True,
raise_parsing_error=False,
read_timeout=30,
)
if isinstance(parsed, str):
print("No parser template matched; store raw output for review")
else:
for row in parsed:
print(row)
Se a análise impulsionar uma decisão de bloqueio, mantenha a saída bruta do comando ao lado do resultado analisado para que um operador possa inspecionar incompatibilidades.
Padrão de Configuração Protegida
import os
commands = [
"interface GigabitEthernet0/1",
"description CHANGE-1234 UPLINK-TO-CORE",
]
apply_changes = os.environ.get("APPLY_NETWORK_CHANGES") == "1"
if not apply_changes:
print("Somente execução de teste. Comandos candidatos:")
print("\n".join(commands))
else:
with ConnectHandler(**device) as conn:
conn.enable()
before = conn.send_command("show running-config interface GigabitEthernet0/1")
output = conn.send_config_set(commands)
after = conn.send_command("show running-config interface GigabitEthernet0/1")
print(before)
print(output)
…
Perguntas frequentes
Como a ferramenta lida com senhas?
Ela usa métodos seguros como variáveis de ambiente ou caixas de diálogo para pedir senhas, nunca as salva diretamente no código.
Posso fazer alterações arriscadas nas configurações?
Sim, mas com muita cautela. Alterações de configuração exigem um passo extra de confirmação e revisão para garantir a segurança.
O que acontece se a conexão falhar?
A ferramenta é projetada para lidar com falhas de conexão ou de comando, informando o erro sem interromper todo o processo.
Detalhes
Descrição original do autor
Safe Python Netmiko patterns for read-only collection, bounded batch SSH, TextFSM parsing, guarded config changes, timeouts, and network automation error handling. Use when automating network device access with Python Netmiko, whether collecting state or pushing guarded config changes.
repo: affaan-m/ECC
Popularidade
- Estrelas no GitHub
- 280 mil
- Posição no ranking
- #238
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
api-and-interface-design
Ajuda a criar APIs e interfaces bem definidas. É útil ao projetar como diferentes partes de um software vão se comunicar.
addyosmani/agent-skills
mason
Ajuda seu agente a escrever código limpo e funcional. Ele segue as regras definidas para garantir que tudo funcione como esperado.
sickn33/agentic-awesome-skills
max
Faz seu agente melhorar o código existente sem mudar o que ele faz. Ele deixa o código mais fácil de ler e manter.
sickn33/agentic-awesome-skills