简介
本文档介绍如何处理Cisco IOS接入点(AP)上报告的闪存损坏问题。
先决条件
要求
思科建议您掌握以下方面的基本知识:
- AireOS无线局域网控制器(WLC)
- 轻量AP
- Python 2.7(不高于)
使用的组件
本文档中的信息基于以下软件和硬件版本:
- Cisco Aironet 1040、1140、1250、1260、1600、1700、2600、2700、3500、3600、3700、700、AP801和AP802系列室内接入点
- Cisco Aironet 1520(1522、1524)、1530、1550(1552)、1570和工业无线3700系列室外和工业无线接入点
注意:由于闪存硬件类型,Wave1 AP型号(如1700/2700/3700和2600/3600)在此问题上的流行率远远高于其他AP类型。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
背景信息
根据FN70330 - Cisco IOS AP由于闪存损坏问题而搁置,由于许多软件错误和AP正常操作,某些Cisco IOS AP上的闪存文件系统可能会随着时间的推移而损坏。这种情况在对WLC执行升级后尤为明显,但不一定仅限于此场景。
AP工作正常,为客户端提供服务,同时处于不易检测的问题状态。
解决方案
在WLC升级之前修复
在升级之前识别网络上受影响的AP并修复它们。 您需要运行WLAN轮询器。
注意:升级前,请阅读整个文档。
WLAN轮询逻辑
每次运行脚本时,都会验证AP闪存是否可以访问。
如果可以访问,它会运行命令fsck flash:
如果一切正常,则转到下一个AP。
- 否则重复该命令最多4次。如果发生故障,脚本可以在最终报告中报告此AP,并且此AP符合恢复条件。
如果它不可访问
如果可以访问,AP可以检查关键文件的MD5值。
如果所有值都正常,则转到下一个AP。
- 否则,脚本可以在最终报告中报告此情况,并且此AP符合恢复条件。
脚本需要运行三次。
- 运行
- 该脚本根据AP上每个文件的MD5校验和值构建MD5数据库。特定文件的最终MD5值是WLC上同一AP系列的命中数最多的值。
- 运行
- 脚本将MD5校验和值与数据库进行比较。如果值匹配,则文件为ok,如果不匹配,则标记AP以便在第三次运行中恢复。
- 运行
- 脚本触发命令test capwap image capwap,仅适用于在前两个步骤中标记的AP。
注意:此恢复方法会在下载并安装映像后重新加载AP。确保在维护窗口中运行它。
安装/准备WLAN轮询器
1.下载WLAN轮询器工具。
注:如果从上一个链接下载最新版本的WLAN轮询器工具,则可以跳过步骤2和步骤3。此版本可自动安装WLAN轮询器工具的所有必需组件。如果您有旧版本的WLAN轮询器(.rar),请执行下一步2和3。
2.将文件移动到要存储WLAN轮询器文件的特定文件夹。
3.有关如何安装脚本的说明,请参阅下一链接:
有关Windows 10计算机上的分步指南,请单击此处。
有关MAC OS的分步指南,请点击此处。
4.准备config.ini文件。
完成安装并生成文件后。您需要编辑文件config.ini。
指定WLC/AP连接模式:
; config global mode for WLC and AP connection: "ssh" or "telnet"
mode: ssh
ap_mode: ssh
指定WLC/AP凭证:
; set global WLC credentials
wlc_user: <wlc_user>
wlc_pasw: <wlc_pasw>
; set global AP credentials
ap_user: <ap_user>
ap_pasw: <ap_pasw>
ap_enable: <ap_enable>
对于闪存检查/恢复,有以下选项。
要识别受影响的AP,请使用:
; ap file system checks (WARNING: recover can force Cisco IOS image download and AP reload)
ap_fs_check: True
ap_fs_recover: False
要恢复AP,请使用:
; ap file system checks (WARNING: recover can force Cisco IOS image download and AP reload)
ap_fs_check: True
ap_fs_recover: True
指定WLC信息
在本示例中,WLC名称为2504-WLC。您可以在WLC Monitor页面上找到此信息。
; WLC sections must be named as [WLC-
]
[WLC-2504-Rafis]
active: True
ipaddr:
您可以添加多个WLC。为此,请使用新的WLC信息复制/粘贴之前的语法。
注:您无需指定任何AP列表。脚本从WLC中提取AP。
运行WLAN轮询器
从创建配置文件的目录中(上一节,步骤3)。使用以下命令: wlanpoller --cli-logging
.
脚本完成后,它会提供以下摘要:
============================================================
Summary
============================================================
Total APs : 1
Processed APs : 1
Failed APs : 0
============================================================
Errors
============================================================
AP MD5 checksum mismatch : 2
AP FSCK recover : 1
============================================================
注意:请记住,脚本需要运行2次,才能获得有关受影响的AP数量的准确信息。
无线局域网轮询器输出
在运行脚本的路径上。创建这些文件。
- ap_md5_db.json:MD5数据库
- 文件夹日志
- 文件夹数据
- 它将报告分解为以下路径:<year> / <month> / <day>
文件: <timestamp>_ap_fs.csv — 对AP执行的检查及其结果的摘要。
列说明
- ap_name:AP的名称。
- ap_type:AP模型。
- ap_uptime:AP的正常运行时间(天)。
- ap_ios_ver:Cisco IOS版本。
- fs_free_bytes:闪存文件系统中的可用字节数。
- flash_issue:如果观察到任何闪存损坏,则为True。
- fs_zero_size:当检测到显示为“ — ”的文件系统挂起时,为True(show file system — 命令)。
- fsck_fail:如果文件系统检查失败,则为True。 — (fsck flash: — 命令)。
- fsck_busy:当闪存fsck时,设备或资源处于忙碌状态。
- fsck_recovered:在fsck上发生错误时为true,但在下一个fsck中修复了该错误。
- fsck_attempts:fsck恢复AP的尝试次数(最多4次)。
- md5_fail:如果md5中至少有一个文件与数据库中存储的文件不同,则为True。
- rcv_trigger:当检测到问题且已启用恢复时,AP尝试从WLC下载映像时为True。
文件:<timestamp>_ap_md5.csv所有文件(在所有AP上)的MD5校验和值的详细信息。
列说明
- ap_name:AP的名称。
- ap_type:AP模型。
- ap_uptime:AP的正常运行时间(天)。
- 文件名:Cisco IOS映像文件名。
- md5_hash:文件名的md5值。
- is_good:true md5值与存储在数据库中的值匹配。发现此文件的md5不匹配错误。
- is_zero_bytes:根据md5checksum,如果文件名有0个字节,则为True,因此文件不正确。
- md5_error:如果无法获取文件名的md5,则检索该md5值时出现错误消息。
注意:可能会出现WLAN轮询器恢复脚本无法恢复某些AP且这些AP在报告中仍标记为失败的情况。在这些情况下,建议通过telnet/SSH/控制台手动将AP恢复到AP CLI。如果您需要有关此流程的帮助,请打开TAC SR。将WLAN轮询器生成的所有输出附加到案例。
搁置AP
如果SSH/Telnet连接
您可以执行以下步骤尝试恢复AP:
AP# debug capwap console cli
AP# debug capwap client no-reload
- 如果成功,则格式化flash,然后可以继续下一步,否则quit。
AP# format flash:
archive download-sw /overwrite tftp://<IP address>/<file name>
AP# verify /md5 flash:/<image directory>/<image file>
您可以在cisco网页上比较CLI值与值。
AP#show boot
AP(config)#boot system flash:/RCV/RCV-image
如果AP Rommon状态
您可以尝试与前面相同的方式,但可以从boot命令尝试。以下是您可以使用的命令:
ap: tftp_init
ap: ether_init
ap: flash_init
ap: format flash:
ap: set IP_ADDR <IP Address>
ap: set NETMASK <mask>
ap: set DEFAULT_ROUTER < default router >
ap: tar -xtract tftp://<IP address>/<file name> flash:
ap: set BOOT flash:/<file name>
ap: boot
无法使用SSH/Telnet
退回交换机端口几次,验证是否有用。
在Windows 10上安装WLAN轮询器的分步指南
注意:如果下载最新版本的WLAN Poller工具,可以跳过此部分。
- 从此链接下载并安装Python 2.7.14。
- 从此链接下载并安装C++编译器Python for Windows客户端。
- 安装完成后,请转到“控制面板”上的“系统设置”,然后选择“高级系统设置”(确保关闭所有Windows终端):
- 在弹出的窗口中,选择Environment Variables。
- 在此处,从System variables中选择Path变量,然后单击Edit。
- 在该窗口中,将路径添加到安装Python 2.7.14.0的基本目录和C:\<Base directory>\Scripts,以便笔记本电脑的命令行识别python命令。单击New并手动添加路径。
关闭所有设置窗口,打开终端(命令提示符)(如果有)。
- 验证是否已安装pip,打开新终端并输入pip —version:
另一个选项是检查文件夹上是否有名为pip或pip2或pip2.7的文件:C:\Python27\Scripts :
- 如果一切正常,请转至升级PIP部分,步骤8。
- 如果出现错误,或者找不到文件夹/文件,请继续阅读。
安装PIP
- 关闭终端,然后从下一个链接安装pip。
- 下载并保存文件get-pip.py。 在网站上查找:
- 将get-pip-py文件复制到文件夹C:\Python27。
注:如果从网站复制并粘贴内容,请确保其不具有py.txt扩展名,请用文件夹C:\Python27上的dir检查此内容,如果发生这种情况,请从终端重命名该文件。
使用下一命令重命名文件:
- 在同一文件夹C:\Python27上执行python get-pip.py。
- 使用以下命令将PIP升级到最新版本:pip install —upgrade pip。
- 上述步骤可以安装所需的所有数据包。现在打开用于Windows的命令行,并转到存储.tar.gz WLAN轮询器文件的目录(使用: cd <Path to directory>)。
- 使用命令pip install wlanpoller-0.7.1.dev90_md5rcv.tar.gz安装脚本。
- 创建一个要存储所有WLAN轮询器信息的新目录。
- 在命令行上,移到该目录,然后运行命令wlanpoller —generate-configs,以创建运行脚本所需的设置变量和配置文件:
单击此处继续使用config.ini文件。
在MacBook上安装WLAN轮询器的分步指南
注意:如果下载最新版本的WLAN Poller工具,可以跳过此部分。
MAC OS已安装Python。要安装其余的数据包,请执行以下步骤:
- 移到具有WLAN轮询器file: cd <path>的文件夹。
- 运行以下命令后:sudo pip install wlanpoller-<version>.tar.gz。为此,您需要使用sudo密码(MACBook管理员密码)。
- 创建新目录以组织脚本可以创建的所有文件。
- mkdir <directory name>
- cd <directory name>
- 执行下一个命令,以便脚本准备运行脚本所需的所有目录/文件:wlanpoller —generate-configs。
单击此处继续config.ini文件。
无线局域网轮询器限制
- WLAN轮询器仅针对Windows 10 64位系统和Apple MacBook 10.11或更高版本的支持进行了测试。
- 如果不使用较新版本的WLANPoller工具,则较旧版本仅支持Python 2.7版本。
- 如果AP名称包含特殊字符,例如 执行脚本期间将会出现下一个错误。
- 用户需要手动从AP名称中删除特殊字符才能解决问题。
相关信息