Diagnose interface errors, drops, CRCs, duplex mismatches, flapping, speed negotiation issues, and counter trends on routers, switches, and Linux hosts.
复制安装指令,让 AI 自动完成配置 · 推荐新手
请帮我安装 askskill 上的 "network-interface-health" 技能: 1. 下载 https://raw.githubusercontent.com/affaan-m/ECC/main/skills/network-interface-health/SKILL.md 2. 保存为 ~/.claude/skills/network-interface-health/SKILL.md 3. 装好后重载技能,告诉我可以用了
Use this skill when a network symptom might be caused by a physical link, switch port, cable, transceiver, duplex setting, or congested interface.
ifInErrors, ifOutErrors, or ifOutDiscards.Interface counters are evidence, but the trend matters more than the absolute number. Capture a baseline, wait a measurement interval, capture again, then compare increments.
show interfaces <interface>
show interfaces <interface> status
show logging | include <interface>|changed state|line protocol
On Linux hosts:
ip -s link show <interface>
ethtool <interface>
ethtool -S <interface>
| Counter | Meaning | Common cause |
|---|---|---|
| CRC | Received frame checksum failed | Bad cable, dirty fiber, bad optic, duplex mismatch |
| input errors | Aggregate receive-side errors | Check sub-counters before concluding |
| runts | Frames below minimum Ethernet size | Duplex mismatch, collision domain, faulty NIC |
| giants | Frames larger than expected MTU | MTU mismatch or jumbo-frame boundary |
| input drops | Device could not accept inbound packets | Burst, oversubscription, CPU path, queue pressure |
| output drops | Egress queue discarded packets | Congestion, QoS policy, undersized uplink |
| resets | Interface hardware reset | Flapping, keepalive, driver, optic, power |
| collisions | Ethernet collision counter | Half duplex or negotiation mismatch |
Prefer auto-negotiation on modern Ethernet links when both sides support it. If one side must be fixed, configure both sides explicitly and document why. Never mix fixed speed/duplex on one side with auto on the other.
show interfaces <interface> | include duplex|speed
Slice each interface block from one header to the next. Do not use an arbitrary character window; large interface blocks can cause counters to be missed or assigned to the wrong port.
import re
from typing import Any
HEADER_RE = re.compile(
r"^(?P<name>\S+) is (?P<status>(?:administratively )?down|up), "
r"line protocol is (?P<protocol>up|down)",
re.I | re.M,
)
ERROR_RE = re.compile(r"(?P<input>\d+) input errors, (?P<crc>\d+) CRC", re.I)
DROP_RE = re.compile(r"(?P<output>\d+) output errors", re.I)
DUPLEX_RE = re.compile(r"(?P<duplex>Full|Half|Auto)-duplex,\s+(?P<speed>[^,]+)", re.I)
def parse_show_interfaces(raw: str) -> list[dict[str, Any]]:
headers = list(HEADER_RE.finditer(raw))
interfaces = []
for index, header in enumerate(headers):
end = headers[index + 1].start() if index + 1 < len(headers) else len(raw)
block = raw[header.start():end]
errors = ERROR_RE.search(block)
drops = DROP_RE.search(block)
duplex = DUPLEX_RE.search(block)
interfaces.append({
"name": header.group("name"),
"status": header.group("status"),
…
调用最新框架与库文档,快速回答配置、API与代码示例问题
通过并行执行、批量调用与独立验证通道,加速复杂任务且保持结果正确。
基于 C++ Core Guidelines 提供现代、安全、惯用的 C++ 编码规范建议
基于多源网页检索与综合分析,生成带引用和来源标注的深度研究报告
帮助你为自适应智能体设计任务编排、评测门控与可复用技能提炼方案
帮助你在编写、审查或重构 React/Next.js 代码时系统优化性能。