用安全的 Netmiko 模式批量执行 SSH 采集、解析与受控变更。
复制安装指令,让 AI 自动完成配置 · 推荐新手
请帮我安装 askskill 上的 "netmiko-ssh-automation" 技能: 1. 下载 https://raw.githubusercontent.com/affaan-m/ECC/main/skills/netmiko-ssh-automation/SKILL.md 2. 保存为 ~/.claude/skills/netmiko-ssh-automation/SKILL.md 3. 装好后重载技能,告诉我可以用了
请用 Python 和 Netmiko 编写一个只读脚本,按批次连接 50 台 Cisco 设备,执行 show version 和 show ip interface brief;限制并发为 5,设置连接与命令超时,单台失败不中断整体任务,并把结果保存为 CSV。
返回带并发控制、超时与异常处理的 Netmiko 脚本,可批量采集并导出设备信息。
请示范如何用 Netmiko 配合 TextFSM 解析 show ip interface brief 的输出,提取接口名、IP、状态和协议状态,并输出为 JSON 列表;如果解析失败,请回退到原始文本并记录告警。
返回包含 TextFSM 解析与失败回退逻辑的示例代码,输出结构化接口数据。
请生成一个 Netmiko 配置变更脚本:先备份当前配置,再检查目标接口是否存在,仅对匹配设备下发 description 变更;每台设备执行前后都打印摘要,遇到异常自动停止该设备操作并输出回滚建议。
返回包含前置检查、备份、变更执行与错误保护的受控配置脚本模板。
Use this skill when writing or reviewing Python automation that connects to network devices with Netmiko. Keep the default path read-only; config changes need a separate change window, peer review, and rollback plan.
show command output across routers, switches, or firewalls.send_command() collection.getpass; never hardcode credentials.send_config_set().save_config() until the change has been verified and approved.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 placeholder addresses from documentation ranges in examples. Keep real inventory in an ignored local file or a secrets-managed system.
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())
Keep max_workers low unless the device estate and AAA systems are known to
handle higher connection volume.
Netmiko can ask TextFSM, TTP, or Genie to parse supported command output. Treat parser output as an optimization, not the only evidence path.
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)
If parsing drives a blocking decision, keep the raw command output alongside the parsed result so an operator can inspect mismatches.
import os
commands = [
"interface GigabitEthernet0/1",
"description CHANGE-1234 UPLINK-TO-CORE",
]
…
为 TypeScript、JavaScript、React 与 Node.js 提供统一编码规范与最佳实践建议
帮助开发者掌握 Ktor 服务端常用模式、认证依赖注入与测试实践。
帮助开发者为代码代理配置性能优化、安全防护与研究优先工作流。
为 Windows 原生桌面应用生成并执行端到端自动化测试流程。
帮助 Swift 开发者实现基于 Actor 的线程安全内存与文件持久化方案
帮助团队编排多代理协作流程,管理任务归属、看板流转与交接控制。
通过 Netmiko 批量执行 SSH 网络设备命令并自动化运维任务。
通过 SSH 连接路由器与交换机,执行命令并下发网络配置变更。
通过 SSH 在 Kali 上执行 NetExec 渗透测试命令,辅助网络安全评估与协议探测。
通过 SSH 管理 MikroTik 路由器配置,执行防火墙、路由与 WireGuard 运维操作。
通过本地 OpenSSH 让 AI 安全连接远程主机并执行运维与传输任务
用自然语言执行 SSH 自动化操作,简化远程服务器管理与运维流程。