[{"data":1,"prerenderedAt":1409},["ShallowReactive",2],{"navigation":3,"blogNavigation":232,"page-\u002Fdocs\u002Fswitchops%E4%BA%A4%E6%8D%A2%E6%9C%BA%E5%B7%A1%E6%A3%80":418,"\u002Fdocs\u002Fswitchops%E4%BA%A4%E6%8D%A2%E6%9C%BA%E5%B7%A1%E6%A3%80-surround":1404},[4],{"title":5,"path":6,"stem":7,"children":8,"page":57},"Docs","\u002Fdocs","docs",[9,176,184],{"title":10,"path":11,"stem":12,"children":13,"icon":16},"简单文档","\u002Fdocs\u002F简单文档","docs\u002F1.简单文档\u002F1.index",[14,17,22,58,63,166,171],{"title":15,"path":11,"stem":12,"icon":16},"入门简介","lucide-house",{"title":18,"path":19,"stem":20,"icon":21},"安装与开发","\u002Fdocs\u002F简单文档\u002Finstallation","docs\u002F1.简单文档\u002F2.installation","lucide-play",{"title":23,"path":24,"stem":25,"children":26,"page":57},"开始写作","\u002Fdocs\u002F简单文档\u002Fwriting","docs\u002F1.简单文档\u002F3.writing",[27,32,37,42,47,52],{"title":28,"path":29,"stem":30,"icon":31},"Markdown","\u002Fdocs\u002F简单文档\u002Fwriting\u002Fmarkdown","docs\u002F1.简单文档\u002F3.writing\u002F1.markdown","simple-icons:markdown",{"title":33,"path":34,"stem":35,"icon":36},"页面 frontmatter","\u002Fdocs\u002F简单文档\u002Fwriting\u002Fpages","docs\u002F1.简单文档\u002F3.writing\u002F2.pages","lucide:file-text",{"title":38,"path":39,"stem":40,"icon":41},"目录与文件命名","\u002Fdocs\u002F简单文档\u002Fwriting\u002Ffolders","docs\u002F1.简单文档\u002F3.writing\u002F3.folders","lucide:folder",{"title":43,"path":44,"stem":45,"icon":46},"单页面示例","\u002Fdocs\u002F简单文档\u002Fwriting\u002Ffull-page-example","docs\u002F1.简单文档\u002F3.writing\u002F4.full-page-example","lucide:layout-template",{"title":48,"path":49,"stem":50,"icon":51},"内容检查与测试","\u002Fdocs\u002F简单文档\u002Fwriting\u002Ftest","docs\u002F1.简单文档\u002F3.writing\u002F5.test","lucide:shield-check",{"title":53,"path":54,"stem":55,"icon":56},"在文章中使用组件","\u002Fdocs\u002F简单文档\u002Fwriting\u002Fmdc-content","docs\u002F1.简单文档\u002F3.writing\u002F6.mdc-content","lucide-blocks",false,{"title":59,"path":60,"stem":61,"icon":62},"部署服务","\u002Fdocs\u002F简单文档\u002Fdeployment","docs\u002F1.简单文档\u002F4.deployment","lucide:cloud",{"title":64,"path":65,"stem":66,"children":67,"page":57},"组件特性","\u002Fdocs\u002F简单文档\u002Fcomponents","docs\u002F1.简单文档\u002F5.components",[68,73,77,81,85,89,93,97,101,105,110,114,118,122,126,131,136,141,146,150,154,158,162],{"title":69,"path":70,"stem":71,"icon":72},"常用组件","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Fapi","docs\u002F1.简单文档\u002F5.components\u002F1.API","lucide-component",{"title":74,"path":75,"stem":76},"Alert","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Falert","docs\u002F1.简单文档\u002F5.components\u002Falert",{"title":78,"path":79,"stem":80},"Badge","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Fbadge","docs\u002F1.简单文档\u002F5.components\u002Fbadge",{"title":82,"path":83,"stem":84},"Button Link","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Fbutton-link","docs\u002F1.简单文档\u002F5.components\u002Fbutton-link",{"title":86,"path":87,"stem":88},"Callout","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Fcallout","docs\u002F1.简单文档\u002F5.components\u002Fcallout",{"title":90,"path":91,"stem":92},"Card","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Fcard","docs\u002F1.简单文档\u002F5.components\u002Fcard",{"title":94,"path":95,"stem":96},"Card Group","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Fcard-group","docs\u002F1.简单文档\u002F5.components\u002Fcard-group",{"title":98,"path":99,"stem":100},"Code Group","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Fcode-group","docs\u002F1.简单文档\u002F5.components\u002Fcode-group",{"title":102,"path":103,"stem":104},"Code Tree","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Fcode-tree","docs\u002F1.简单文档\u002F5.components\u002Fcode-tree",{"title":106,"path":107,"stem":108,"icon":109},"博客与文档内容块","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Fcontent-blocks","docs\u002F1.简单文档\u002F5.components\u002Fcontent-blocks","lucide-panels-top-left",{"title":111,"path":112,"stem":113},"Field","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Ffield","docs\u002F1.简单文档\u002F5.components\u002Ffield",{"title":115,"path":116,"stem":117},"Field Group","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Ffield-group","docs\u002F1.简单文档\u002F5.components\u002Ffield-group",{"title":119,"path":120,"stem":121},"File Tree","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Ffile-tree","docs\u002F1.简单文档\u002F5.components\u002Ffile-tree",{"title":123,"path":124,"stem":125},"Icon","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Ficon","docs\u002F1.简单文档\u002F5.components\u002Ficon",{"title":127,"path":128,"stem":129,"icon":130},"数据、API 与阅读交互组件","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Finteractive-blocks","docs\u002F1.简单文档\u002F5.components\u002Finteractive-blocks","lucide-table-properties",{"title":132,"path":133,"stem":134,"icon":135},"进阶组件交互演示","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Finteractive-showcase","docs\u002F1.简单文档\u002F5.components\u002Finteractive-showcase","lucide-sliders-horizontal",{"title":137,"path":138,"stem":139,"icon":140},"MDC 语法与组件注册","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Fmdc-guide","docs\u002F1.简单文档\u002F5.components\u002Fmdc-guide","lucide-file-code",{"title":142,"path":143,"stem":144,"icon":145},"MDC 组件交互演示","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Fmdc-showcase","docs\u002F1.简单文档\u002F5.components\u002Fmdc-showcase","lucide-mouse-pointer-click",{"title":147,"path":148,"stem":149},"Playground","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Fplayground","docs\u002F1.简单文档\u002F5.components\u002Fplayground",{"title":151,"path":152,"stem":153},"Read More","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Fread-more","docs\u002F1.简单文档\u002F5.components\u002Fread-more",{"title":155,"path":156,"stem":157},"Stack","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Fstack","docs\u002F1.简单文档\u002F5.components\u002Fstack",{"title":159,"path":160,"stem":161},"Steps","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Fsteps","docs\u002F1.简单文档\u002F5.components\u002Fsteps",{"title":163,"path":164,"stem":165},"Tabs","\u002Fdocs\u002F简单文档\u002Fcomponents\u002Ftabs","docs\u002F1.简单文档\u002F5.components\u002Ftabs",{"title":167,"path":168,"stem":169,"icon":170},"功能与路线图","\u002Fdocs\u002F简单文档\u002F功能与路线图","docs\u002F1.简单文档\u002F6.功能与路线图","lucide:map",{"title":172,"path":173,"stem":174,"icon":175},"Nuxt Studio 现状与运维说明","\u002Fdocs\u002F简单文档\u002Fnuxt-studio-upgrade-plan","docs\u002F1.简单文档\u002F7.nuxt-studio-upgrade-plan","simple-icons:nuxtdotjs",{"title":177,"path":178,"stem":179,"children":180,"icon":183},"无人自助系统","\u002Fdocs\u002F无人自助系统","docs\u002F2.无人自助系统\u002F1.index",[181],{"title":182,"path":178,"stem":179,"icon":183},"介绍","simple-icons:opencollective",{"title":185,"path":186,"stem":187,"children":188,"icon":191},"SwitchOps 交换机巡检","\u002Fdocs\u002Fswitchops交换机巡检","docs\u002F3.SwitchOps交换机巡检\u002F1.index",[189,192,197,202,207,212,217,222,227],{"title":190,"path":186,"stem":187,"icon":191},"产品简介","lucide:house",{"title":193,"path":194,"stem":195,"icon":196},"快速开始","\u002Fdocs\u002Fswitchops交换机巡检\u002Fquick-start","docs\u002F3.SwitchOps交换机巡检\u002F2.quick-start","lucide:rocket",{"title":198,"path":199,"stem":200,"icon":201},"设备清单配置","\u002Fdocs\u002Fswitchops交换机巡检\u002Fdevice-config","docs\u002F3.SwitchOps交换机巡检\u002F3.device-config","lucide:list-tree",{"title":203,"path":204,"stem":205,"icon":206},"图形界面使用","\u002Fdocs\u002Fswitchops交换机巡检\u002Fgui-guide","docs\u002F3.SwitchOps交换机巡检\u002F4.gui-guide","lucide:monitor",{"title":208,"path":209,"stem":210,"icon":211},"命令行使用","\u002Fdocs\u002Fswitchops交换机巡检\u002Fcli-guide","docs\u002F3.SwitchOps交换机巡检\u002F5.cli-guide","lucide:square-terminal",{"title":213,"path":214,"stem":215,"icon":216},"报告与历史数据","\u002Fdocs\u002Fswitchops交换机巡检\u002Freports-history","docs\u002F3.SwitchOps交换机巡检\u002F6.reports-history","lucide:file-chart-column",{"title":218,"path":219,"stem":220,"icon":221},"高级配置","\u002Fdocs\u002Fswitchops交换机巡检\u002Fadvanced-config","docs\u002F3.SwitchOps交换机巡检\u002F7.advanced-config","lucide:settings",{"title":223,"path":224,"stem":225,"icon":226},"Windows 打包部署","\u002Fdocs\u002Fswitchops交换机巡检\u002Fwindows-deployment","docs\u002F3.SwitchOps交换机巡检\u002F8.windows-deployment","lucide:package",{"title":228,"path":229,"stem":230,"icon":231},"故障排查与安全","\u002Fdocs\u002Fswitchops交换机巡检\u002Ftroubleshooting-security","docs\u002F3.SwitchOps交换机巡检\u002F9.troubleshooting-security","lucide:shield-alert",[233],{"title":234,"path":235,"stem":236,"children":237,"page":57},"Blog","\u002Fblog","blog",[238,401,410],{"title":239,"path":240,"stem":241,"children":242,"page":57},"技术栈","\u002Fblog\u002F技术栈","blog\u002F1.技术栈",[243,248,253,258,262,267,271,276,280,284,289,294,299,303,307,311,315,319,324,328,333,338,343,347,352,357,362,367,372,376,381,386,391,396],{"title":244,"path":245,"stem":246,"icon":247},"最近给文档站补了些什么","\u002Fblog\u002F技术栈\u002Festel-docs-recent-updates","blog\u002F1.技术栈\u002F968.estel-docs-recent-updates","lucide:blocks",{"title":249,"path":250,"stem":251,"icon":252},"国产化终端能上办公网，却登录不了 OA：一次网络准入故障排查","\u002Fblog\u002F技术栈\u002F国产化终端办公oa网络准入故障排查","blog\u002F1.技术栈\u002F969.国产化终端办公OA网络准入故障排查","lucide:network",{"title":254,"path":255,"stem":256,"icon":257},"准备新的插件","\u002Fblog\u002F技术栈\u002F新的插件","blog\u002F1.技术栈\u002F970.新的插件","simple-icons:debian",{"title":259,"path":260,"stem":261,"icon":257},"防于未然，先固不破 — Debian 12 快速加固实战","\u002Fblog\u002F技术栈\u002F服务器加固实战","blog\u002F1.技术栈\u002F971.服务器加固实战",{"title":263,"path":264,"stem":265,"icon":266},"nmap高级应用技巧-实战","\u002Fblog\u002F技术栈\u002Fnmap高级应用技巧-实战","blog\u002F1.技术栈\u002F972.nmap高级应用技巧-实战","simple-icons:openstreetmap",{"title":268,"path":269,"stem":270,"icon":266},"nmap高级应用技巧-NSE","\u002Fblog\u002F技术栈\u002Fnmap高级应用技巧-nse","blog\u002F1.技术栈\u002F973.nmap高级应用技巧-NSE",{"title":272,"path":273,"stem":274,"icon":275},"部分vue组件语法预览","\u002Fblog\u002F技术栈\u002F部分组件语法展示","blog\u002F1.技术栈\u002F974.部分组件语法展示","simple-icons:vuedotjs",{"title":277,"path":278,"stem":279,"icon":175},"新的文档渲染样式","\u002Fblog\u002F技术栈\u002F新的文档渲染样式","blog\u002F1.技术栈\u002F975.新的文档渲染样式",{"title":281,"path":282,"stem":283,"icon":175},"Nuxt 微信分享接口","\u002Fblog\u002F技术栈\u002Fnuxt-微信分享接口","blog\u002F1.技术栈\u002F976.Nuxt 微信分享接口",{"title":285,"path":286,"stem":287,"icon":288},"AI复合应用 合同审查","\u002Fblog\u002F技术栈\u002Fai复合应用-合同审查","blog\u002F1.技术栈\u002F978.AI复合应用 合同审查","simple-icons:openai",{"title":290,"path":291,"stem":292,"icon":293},"Kali 安装 GVM","\u002Fblog\u002F技术栈\u002Fkali-安装-gvm","blog\u002F1.技术栈\u002F979.Kali 安装 GVM","simple-icons:kalilinux",{"title":295,"path":296,"stem":297,"icon":298},"GPT-5","\u002Fblog\u002F技术栈\u002Fgpt5","blog\u002F1.技术栈\u002F980.GPT5","simple-icons:powershell",{"title":300,"path":301,"stem":302,"icon":288},"使用 AI 守护内网安全","\u002Fblog\u002F技术栈\u002F使用-ai-守护内网安全","blog\u002F1.技术栈\u002F981.使用 AI 守护内网安全",{"title":304,"path":305,"stem":306,"icon":266},"系统安全扫描工具命令集合","\u002Fblog\u002F技术栈\u002F系统安全扫描工具命令集合","blog\u002F1.技术栈\u002F982.系统安全扫描工具命令集合",{"title":308,"path":309,"stem":310},"用 MDC 组织技术文章","\u002Fblog\u002F技术栈\u002Fmdc-article-example","blog\u002F1.技术栈\u002F983.mdc-article-example",{"title":312,"path":313,"stem":314,"icon":293},"系统安全综合评估报告","\u002Fblog\u002F技术栈\u002F系统安全综合评估报告","blog\u002F1.技术栈\u002F983.系统安全综合评估报告",{"title":316,"path":317,"stem":318},"用交互组件写一份技术说明","\u002Fblog\u002F技术栈\u002Fmdc-interactive-example","blog\u002F1.技术栈\u002F984.mdc-interactive-example",{"title":320,"path":321,"stem":322,"icon":323},"树莓派安装 Kali Linux","\u002Fblog\u002F技术栈\u002F树莓派安装-kali-linux","blog\u002F1.技术栈\u002F984.树莓派安装 Kali Linux","simple-icons:raspberrypi",{"title":325,"path":326,"stem":327,"icon":175},"Nuxt UI Pro","\u002Fblog\u002F技术栈\u002Fnuxt-ui-pro","blog\u002F1.技术栈\u002F985.Nuxt UI Pro",{"title":329,"path":330,"stem":331,"icon":332},"Supabase 阿里云短信","\u002Fblog\u002F技术栈\u002Fsupabase-阿里云短信","blog\u002F1.技术栈\u002F986.Supabase 阿里云短信","simple-icons:alibabacloud",{"title":334,"path":335,"stem":336,"icon":337},"Coolify","\u002Fblog\u002F技术栈\u002Fcoolify","blog\u002F1.技术栈\u002F987.Coolify","simple-icons:chai",{"title":339,"path":340,"stem":341,"icon":342},"Python 代码规范","\u002Fblog\u002F技术栈\u002Fpython-代码规范","blog\u002F1.技术栈\u002F988.Python 代码规范","simple-icons:python",{"title":344,"path":345,"stem":346,"icon":175},"Nuxt3 代码规范","\u002Fblog\u002F技术栈\u002Fnuxt3-代码规范","blog\u002F1.技术栈\u002F989.Nuxt3 代码规范",{"title":348,"path":349,"stem":350,"icon":351},"Linux 系统 Swap 分区配置指南","\u002Fblog\u002F技术栈\u002Flinux-系统-swap-分区配置指南","blog\u002F1.技术栈\u002F990.Linux 系统 Swap 分区配置指南","simple-icons:linux",{"title":353,"path":354,"stem":355,"icon":356},"从Supabase迁移到Appwrite","\u002Fblog\u002F技术栈\u002F从supabase迁移到appwrite","blog\u002F1.技术栈\u002F991.从Supabase迁移到Appwrite","simple-icons:supabase",{"title":358,"path":359,"stem":360,"icon":361},"AppWrite 项目资源占用情况","\u002Fblog\u002F技术栈\u002Fappwrite-项目资源占用情况","blog\u002F1.技术栈\u002F992.AppWrite 项目资源占用情况","simple-icons:appwrite",{"title":363,"path":364,"stem":365,"icon":366},"Docker 里配置hosts","\u002Fblog\u002F技术栈\u002Fdocker-里配置hosts","blog\u002F1.技术栈\u002F993.Docker 里配置hosts","simple-icons:docker",{"title":368,"path":369,"stem":370,"icon":371},"MySQL 中如何忽略表名的大小写","\u002Fblog\u002F技术栈\u002Fmysql-中如何忽略表名的大小写","blog\u002F1.技术栈\u002F994.MySQL 中如何忽略表名的大小写","simple-icons:mysql",{"title":373,"path":374,"stem":375,"icon":257},"Debian 12 安装nodejs","\u002Fblog\u002F技术栈\u002Fdebian-12-安装nodejs","blog\u002F1.技术栈\u002F995.Debian 12 安装nodejs",{"title":377,"path":378,"stem":379,"icon":380},"Dify + Supabase：打造带数据库的AI问答机器人","\u002Fblog\u002F技术栈\u002Fdify-supabase：打造带数据库的ai问答机器人","blog\u002F1.技术栈\u002F996.Dify + Supabase：打造带数据库的AI问答机器人","simple-icons:reactbootstrap",{"title":382,"path":383,"stem":384,"icon":385},"安装 VS Code到浏览器 -- Code Server","\u002Fblog\u002F技术栈\u002F安装-vs-code到浏览器-code-server-copy","blog\u002F1.技术栈\u002F996.安装 VS Code到浏览器 -- Code Server copy","simple-icons:visualstudiocode",{"title":387,"path":388,"stem":389,"icon":390},"Debian 12 云服务器初始安全设置与优化指南","\u002Fblog\u002F技术栈\u002Fdebian-12-云服务器初始安全设置与优化指南","blog\u002F1.技术栈\u002F997.Debian 12 云服务器初始安全设置与优化指南","lucide-server",{"title":392,"path":393,"stem":394,"icon":395},"Iperf3 万兆网络打流测试指南","\u002Fblog\u002F技术栈\u002Fiperf3-万兆网络打流测试指南","blog\u002F1.技术栈\u002F998.Iperf3 万兆网络打流测试指南","lucide-network",{"title":397,"path":398,"stem":399,"icon":400},"GROK3 and Deepseek","\u002Fblog\u002F技术栈\u002Fgrok3-and-deepseek","blog\u002F1.技术栈\u002F999.GROK3-and-Deepseek","lucide-brain",{"title":402,"path":403,"stem":404,"children":405,"page":57},"AI","\u002Fblog\u002Fai","blog\u002F2.AI",[406],{"title":407,"path":408,"stem":409,"icon":337},"AI最佳实践","\u002Fblog\u002Fai\u002Fai","blog\u002F2.AI\u002F01.AI",{"title":411,"path":412,"stem":413,"children":414,"page":57},"生活","\u002Fblog\u002F生活","blog\u002F3.生活",[415],{"title":411,"path":416,"stem":417,"icon":337},"\u002Fblog\u002F生活\u002F生活","blog\u002F3.生活\u002F01.生活",{"id":419,"title":190,"badges":420,"body":427,"date":1389,"description":1390,"draft":57,"extension":1391,"fullpage":57,"icon":1389,"links":1392,"meta":1398,"navBadges":1389,"navigation":1399,"path":186,"rawbody":1400,"seo":1401,"stem":187,"updated":1402,"__hash__":1403},"docs\u002Fdocs\u002F3.SwitchOps交换机巡检\u002F1.index.md",[421,424],{"value":422,"type":423},"v0.1.0","secondary",{"value":425,"type":426},"开源项目","outline",{"type":428,"value":429,"toc":1380},"minimark",[430,435,443,446,450,553,556,1198,1201,1223,1226,1229,1295,1301,1304,1319,1326,1329],[431,432,434],"h1",{"id":433},"switchops-交换机自动化巡检工具","SwitchOps 交换机自动化巡检工具",[436,437,438,442],"p",{},[439,440,441],"code",{},"switch-ops-netmiko"," 是一个基于 Python、Netmiko 的交换机只读巡检工具，面向需要批量检查院内或园区网络设备的运维人员。它支持华为 VRP 和华三 Comware 设备，既可以通过 Windows 图形界面操作，也可以通过命令行接入日常自动化流程。",[436,444,445],{},"工具会自动登录交换机、执行预设的只读命令、保存完整原始回显，并生成 Excel 巡检报告。巡检结果还可以写入 SQLite 历史库，用于查看设备状态变化趋势。",[447,448,449],"h2",{"id":449},"主要能力",[451,452,453,466],"table",{},[454,455,456],"thead",{},[457,458,459,463],"tr",{},[460,461,462],"th",{},"能力",[460,464,465],{},"说明",[467,468,469,478,486,505,513,521,529,537,545],"tbody",{},[457,470,471,475],{},[472,473,474],"td",{},"批量巡检",[472,476,477],{},"一次巡检全部启用设备，也可以只巡检指定或勾选的设备。",[457,479,480,483],{},[472,481,482],{},"多厂商支持",[472,484,485],{},"内置华为 VRP、华三 Comware 命令模板。",[457,487,488,491],{},[472,489,490],{},"只读采集",[472,492,493,494,497,498,497,501,504],{},"仅允许 ",[439,495,496],{},"display","、",[439,499,500],{},"show",[439,502,503],{},"screen-length"," 等查询或分页命令。",[457,506,507,510],{},[472,508,509],{},"实时查询",[472,511,512],{},"支持单设备 ARP、MAC 地址表和接口状态查询。",[457,514,515,518],{},[472,516,517],{},"重点端口监控",[472,519,520],{},"可为核心上联、服务器或防火墙互联口配置专项状态检查。",[457,522,523,526],{},[472,524,525],{},"Excel 报告",[472,527,528],{},"自动生成巡检汇总、失败设备清单和端口台账。",[457,530,531,534],{},[472,532,533],{},"原始数据留存",[472,535,536],{},"每台设备保存完整命令回显，解析不完整时仍可人工复核。",[457,538,539,542],{},[472,540,541],{},"历史趋势",[472,543,544],{},"巡检结果写入 SQLite，可按设备查看最近 CPU、内存、接口和结论。",[457,546,547,550],{},[472,548,549],{},"Windows 交付",[472,551,552],{},"可通过 PyInstaller 打包为单文件 EXE，方便一线运维人员使用。",[447,554,555],{"id":555},"工作流程",[436,557,558],{},[559,560,572,576,1175,1189],"svg",{"ariaRoleDescription":561,"className":563,"id":565,"role":566,"style":567,"viewBox":568,"width":569,"xmlns":570,"xmlnsXLink":571},[562],"flowchart-v2",[564],"flowchart","mermaid-0","graphics-document document","max-width: 1138.28125px;","0 0 1138.28125 350","100%","http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg","http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxlink",[573,574,575],"style",{},"#mermaid-0{font-family:arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-0 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-0 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-0 .error-icon{fill:#552222;}#mermaid-0 .error-text{fill:#552222;stroke:#552222;}#mermaid-0 .edge-thickness-normal{stroke-width:1px;}#mermaid-0 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-0 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-0 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-0 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-0 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-0 .marker{fill:#333333;stroke:#333333;}#mermaid-0 .marker.cross{stroke:#333333;}#mermaid-0 svg{font-family:arial,sans-serif;font-size:16px;}#mermaid-0 p{margin:0;}#mermaid-0 .label{font-family:arial,sans-serif;color:#333;}#mermaid-0 .cluster-label text{fill:#333;}#mermaid-0 .cluster-label span{color:#333;}#mermaid-0 .cluster-label span p{background-color:transparent;}#mermaid-0 .label text,#mermaid-0 span{fill:#333;color:#333;}#mermaid-0 .node rect,#mermaid-0 .node circle,#mermaid-0 .node ellipse,#mermaid-0 .node polygon,#mermaid-0 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-0 .rough-node .label text,#mermaid-0 .node .label text,#mermaid-0 .image-shape .label,#mermaid-0 .icon-shape .label{text-anchor:middle;}#mermaid-0 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-0 .rough-node .label,#mermaid-0 .node .label,#mermaid-0 .image-shape .label,#mermaid-0 .icon-shape .label{text-align:center;}#mermaid-0 .node.clickable{cursor:pointer;}#mermaid-0 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-0 .arrowheadPath{fill:#333333;}#mermaid-0 .edgePaths .path{stroke:#333333;stroke-width:1px;}#mermaid-0 .flowchart-link{stroke:#333333;fill:none;}#mermaid-0 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-0 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-0 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-0 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-0 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-0 .cluster text{fill:#333;}#mermaid-0 .cluster span{color:#333;}#mermaid-0 .node .collapsed-indicator{fill:#aaaa33;stroke:none;opacity:0.6;}#mermaid-0 .node .collapsed-separator{stroke:#aaaa33;stroke-width:0.75px;}#mermaid-0 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-0 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-0 rect.text{fill:none;stroke-width:0;}#mermaid-0 .icon-shape,#mermaid-0 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-0 .icon-shape p,#mermaid-0 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-0 .icon-shape .label rect,#mermaid-0 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-0 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-0 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-0 .node .neo-node{stroke:#9370DB;}#mermaid-0 [data-look=\"neo\"].node rect,#mermaid-0 [data-look=\"neo\"].cluster rect,#mermaid-0 [data-look=\"neo\"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-0 [data-look=\"neo\"].swimlane.cluster rect{filter:none;}#mermaid-0 [data-look=\"neo\"].node path{stroke:#9370DB;stroke-width:1px;}#mermaid-0 [data-look=\"neo\"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-0 [data-look=\"neo\"].node .neo-line path{stroke:#9370DB;filter:none;}#mermaid-0 [data-look=\"neo\"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-0 [data-look=\"neo\"].node circle .state-start{fill:#000000;}#mermaid-0 [data-look=\"neo\"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-0 [data-look=\"neo\"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-0 :root{--mermaid-font-family:arial,sans-serif;}",[577,578,579,596,605,619,629,638,646,654,662,675,682,694,703],"g",{},[580,581,589],"marker",{"className":582,"id":583,"markerHeight":584,"markerUnits":585,"markerWidth":584,"orient":586,"refX":587,"refY":587,"viewBox":588},[562,580],"mermaid-0_flowchart-v2-pointEnd","8","userSpaceOnUse","auto","5","0 0 10 10",[590,591],"path",{"className":592,"d":594,"style":595},[593],"arrowMarkerPath","M 0 0 L 10 5 L 0 10 z","stroke-width: 1; stroke-dasharray: 1, 0;",[580,597,601],{"className":598,"id":599,"markerHeight":584,"markerUnits":585,"markerWidth":584,"orient":586,"refX":600,"refY":587,"viewBox":588},[562,580],"mermaid-0_flowchart-v2-pointStart","4.5",[590,602],{"className":603,"d":604,"style":595},[593],"M 0 5 L 10 10 L 10 0 z",[580,606,614],{"className":607,"id":608,"markerHeight":609,"markerUnits":585,"markerWidth":610,"orient":586,"refX":611,"refY":612,"viewBox":613},[562,580],"mermaid-0_flowchart-v2-pointEnd-margin","14","10.5","11.5","7","0 0 11.5 14",[590,615],{"className":616,"d":617,"style":618},[593],"M 0 0 L 11.5 7 L 0 14 z","stroke-width: 0; stroke-dasharray: 1, 0;",[580,620,624],{"className":621,"id":622,"markerHeight":609,"markerUnits":585,"markerWidth":611,"orient":586,"refX":623,"refY":612,"viewBox":613},[562,580],"mermaid-0_flowchart-v2-pointStart-margin","1",[625,626],"polygon",{"className":627,"points":628,"style":618},[593],"0,7 11.5,14 11.5,0",[580,630,634],{"className":631,"id":632,"markerHeight":633,"markerUnits":585,"markerWidth":633,"orient":586,"refX":633,"refY":587,"viewBox":588},[562,580],"mermaid-0_flowchart-v2-circleEnd","11",[635,636],"circle",{"className":637,"cx":587,"cy":587,"r":587,"style":595},[593],[580,639,643],{"className":640,"id":641,"markerHeight":633,"markerUnits":585,"markerWidth":633,"orient":586,"refX":642,"refY":587,"viewBox":588},[562,580],"mermaid-0_flowchart-v2-circleStart","-1",[635,644],{"className":645,"cx":587,"cy":587,"r":587,"style":595},[593],[580,647,651],{"className":648,"id":649,"markerHeight":609,"markerUnits":585,"markerWidth":609,"orient":586,"refX":650,"refY":587,"viewBox":588},[562,580],"mermaid-0_flowchart-v2-circleEnd-margin","12.25",[635,652],{"className":653,"cx":587,"cy":587,"r":587,"style":618},[593],[580,655,659],{"className":656,"id":657,"markerHeight":609,"markerUnits":585,"markerWidth":609,"orient":586,"refX":658,"refY":587,"viewBox":588},[562,580],"mermaid-0_flowchart-v2-circleStart-margin","-2",[635,660],{"className":661,"cx":587,"cy":587,"r":587,"style":618},[593],[580,663,670],{"className":664,"id":666,"markerHeight":633,"markerUnits":585,"markerWidth":633,"orient":586,"refX":667,"refY":668,"viewBox":669},[562,580,665],"cross","mermaid-0_flowchart-v2-crossEnd","12","5.2","0 0 11 11",[590,671],{"className":672,"d":673,"style":674},[593],"M 1,1 l 9,9 M 10,1 l -9,9","stroke-width: 2; stroke-dasharray: 1, 0;",[580,676,679],{"className":677,"id":678,"markerHeight":633,"markerUnits":585,"markerWidth":633,"orient":586,"refX":642,"refY":668,"viewBox":669},[562,580,665],"mermaid-0_flowchart-v2-crossStart",[590,680],{"className":681,"d":673,"style":674},[593],[580,683,689],{"className":684,"id":685,"markerHeight":667,"markerUnits":585,"markerWidth":667,"orient":586,"refX":686,"refY":687,"viewBox":688},[562,580,665],"mermaid-0_flowchart-v2-crossEnd-margin","17.7","7.5","0 0 15 15",[590,690],{"className":691,"d":692,"style":693},[593],"M 1,1 L 14,14 M 1,14 L 14,1","stroke-width: 2.5;",[580,695,699],{"className":696,"id":697,"markerHeight":667,"markerUnits":585,"markerWidth":667,"orient":586,"refX":698,"refY":687,"viewBox":688},[562,580,665],"mermaid-0_flowchart-v2-crossStart-margin","-3.5",[590,700],{"className":701,"d":692,"style":702},[593],"stroke-width: 2.5; stroke-dasharray: 1, 0;",[577,704,707,711,779,905],{"className":705},[706],"root",[577,708],{"className":709},[710],"clusters",[577,712,715,730,737,744,751,758,765,772],{"className":713},[714],"edgePaths",[590,716],{"className":717,"d":721,"style":722,"dataEdge":723,"dataEt":724,"dataId":725,"dataLook":726,"dataPoints":727,"id":728,"markerEnd":729},[718,718,719,719,720],"edge-pattern-solid","edge-thickness-normal","flowchart-link","M178.242,47L185.368,47C192.495,47,206.747,47,225.856,63.296C244.965,79.592,268.93,112.185,280.912,128.481L292.895,144.777",";","true","edge","L_A_B_0","classic","W3sieCI6MTc4LjI0MjE4NzUsInkiOjQ3fSx7IngiOjIyMSwieSI6NDd9LHsieCI6Mjk1LjI2NDM0MzI2MTcxODc1LCJ5IjoxNDh9XQ==","mermaid-0-L_A_B_0","url(#mermaid-0_flowchart-v2-pointEnd)",[590,731],{"className":732,"d":733,"style":722,"dataEdge":723,"dataEt":724,"dataId":734,"dataLook":726,"dataPoints":735,"id":736,"markerEnd":729},[718,718,719,719,720],"M190.242,175L195.368,175C200.495,175,210.747,175,219.374,175C228,175,235,175,238.5,175L242,175","L_C_B_0","W3sieCI6MTkwLjI0MjE4NzUsInkiOjE3NX0seyJ4IjoyMjEsInkiOjE3NX0seyJ4IjoyNDYsInkiOjE3NX1d","mermaid-0-L_C_B_0",[590,738],{"className":739,"d":740,"style":722,"dataEdge":723,"dataEt":724,"dataId":741,"dataLook":726,"dataPoints":742,"id":743,"markerEnd":729},[718,718,719,719,720],"M196,303L200.167,303C204.333,303,212.667,303,228.816,286.704C244.965,270.408,268.93,237.815,280.912,221.519L292.895,205.223","L_D_B_0","W3sieCI6MTk2LCJ5IjozMDN9LHsieCI6MjIxLCJ5IjozMDN9LHsieCI6Mjk1LjI2NDM0MzI2MTcxODc1LCJ5IjoyMDJ9XQ==","mermaid-0-L_D_B_0",[590,745],{"className":746,"d":747,"style":722,"dataEdge":723,"dataEt":724,"dataId":748,"dataLook":726,"dataPoints":749,"id":750,"markerEnd":729},[718,718,719,719,720],"M384.234,175L388.401,175C392.568,175,400.901,175,408.568,175C416.234,175,423.234,175,426.734,175L430.234,175","L_B_E_0","W3sieCI6Mzg0LjIzNDM3NSwieSI6MTc1fSx7IngiOjQwOS4yMzQzNzUsInkiOjE3NX0seyJ4Ijo0MzQuMjM0Mzc1LCJ5IjoxNzV9XQ==","mermaid-0-L_B_E_0",[590,752],{"className":753,"d":754,"style":722,"dataEdge":723,"dataEt":724,"dataId":755,"dataLook":726,"dataPoints":756,"id":757,"markerEnd":729},[718,718,719,719,720],"M617.725,148L628.721,143.833C639.718,139.667,661.71,131.333,679.984,127.167C698.258,123,712.813,123,720.09,123L727.367,123","L_E_F_0","W3sieCI6NjE3LjcyNTA2MDA5NjE1MzgsInkiOjE0OH0seyJ4Ijo2ODMuNzAzMTI1LCJ5IjoxMjN9LHsieCI6NzMxLjM2NzE4NzUsInkiOjEyM31d","mermaid-0-L_E_F_0",[590,759],{"className":760,"d":761,"style":722,"dataEdge":723,"dataEt":724,"dataId":762,"dataLook":726,"dataPoints":763,"id":764,"markerEnd":729},[718,718,719,719,720],"M617.725,202L628.721,206.167C639.718,210.333,661.71,218.667,676.207,222.833C690.703,227,697.703,227,701.203,227L704.703,227","L_E_G_0","W3sieCI6NjE3LjcyNTA2MDA5NjE1MzgsInkiOjIwMn0seyJ4Ijo2ODMuNzAzMTI1LCJ5IjoyMjd9LHsieCI6NzA4LjcwMzEyNSwieSI6MjI3fV0=","mermaid-0-L_E_G_0",[590,766],{"className":767,"d":768,"style":722,"dataEdge":723,"dataEt":724,"dataId":769,"dataLook":726,"dataPoints":770,"id":771,"markerEnd":729},[718,718,719,719,720],"M876.645,200L886.822,195.833C896.998,191.667,917.351,183.333,931.027,179.167C944.703,175,951.703,175,955.203,175L958.703,175","L_G_H_0","W3sieCI6ODc2LjY0NTQzMjY5MjMwNzcsInkiOjIwMH0seyJ4Ijo5MzcuNzAzMTI1LCJ5IjoxNzV9LHsieCI6OTYyLjcwMzEyNSwieSI6MTc1fV0=","mermaid-0-L_G_H_0",[590,773],{"className":774,"d":775,"style":722,"dataEdge":723,"dataEt":724,"dataId":776,"dataLook":726,"dataPoints":777,"id":778,"markerEnd":729},[718,718,719,719,720],"M876.645,254L886.822,258.167C896.998,262.333,917.351,270.667,931.545,274.833C945.74,279,953.776,279,957.794,279L961.813,279","L_G_I_0","W3sieCI6ODc2LjY0NTQzMjY5MjMwNzcsInkiOjI1NH0seyJ4Ijo5MzcuNzAzMTI1LCJ5IjoyNzl9LHsieCI6OTY1LjgxMjUsInkiOjI3OX1d","mermaid-0-L_G_I_0",[577,780,783,807,821,835,849,863,877,891],{"className":781},[782],"edgeLabels",[577,784,787],{"className":785},[786],"edgeLabel",[577,788,792],{"className":789,"transform":791,"dataId":725},[790],"label","translate(0, 0)",[793,794,796],"foreignObject",{"height":795,"width":795},"0",[797,798,803],"div",{"style":799,"xmlns":800,"className":801},"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;","http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxhtml",[802],"labelBkg",[804,805],"span",{"className":806},[786],[577,808,810],{"className":809},[786],[577,811,813],{"className":812,"transform":791,"dataId":734},[790],[793,814,815],{"height":795,"width":795},[797,816,818],{"style":799,"xmlns":800,"className":817},[802],[804,819],{"className":820},[786],[577,822,824],{"className":823},[786],[577,825,827],{"className":826,"transform":791,"dataId":741},[790],[793,828,829],{"height":795,"width":795},[797,830,832],{"style":799,"xmlns":800,"className":831},[802],[804,833],{"className":834},[786],[577,836,838],{"className":837},[786],[577,839,841],{"className":840,"transform":791,"dataId":748},[790],[793,842,843],{"height":795,"width":795},[797,844,846],{"style":799,"xmlns":800,"className":845},[802],[804,847],{"className":848},[786],[577,850,852],{"className":851},[786],[577,853,855],{"className":854,"transform":791,"dataId":755},[790],[793,856,857],{"height":795,"width":795},[797,858,860],{"style":799,"xmlns":800,"className":859},[802],[804,861],{"className":862},[786],[577,864,866],{"className":865},[786],[577,867,869],{"className":868,"transform":791,"dataId":762},[790],[793,870,871],{"height":795,"width":795},[797,872,874],{"style":799,"xmlns":800,"className":873},[802],[804,875],{"className":876},[786],[577,878,880],{"className":879},[786],[577,881,883],{"className":882,"transform":791,"dataId":769},[790],[793,884,885],{"height":795,"width":795},[797,886,888],{"style":799,"xmlns":800,"className":887},[802],[804,889],{"className":890},[786],[577,892,894],{"className":893},[786],[577,895,897],{"className":896,"transform":791,"dataId":776},[790],[793,898,899],{"height":795,"width":795},[797,900,902],{"style":799,"xmlns":800,"className":901},[802],[804,903],{"className":904},[786],[577,906,909,950,980,1010,1040,1067,1094,1121,1148],{"className":907},[908],"nodes",[577,910,916,927],{"className":911,"transform":914,"dataLook":726,"id":915},[912,913],"default","node","translate(102, 47)","mermaid-0-flowchart-A-0",[917,918],"rect",{"className":919,"height":922,"style":923,"width":924,"x":925,"y":926},[920,921],"basic","label-container","78","","152.484375","-76.2421875","-39",[577,928,931,933],{"className":929,"transform":930,"style":923},[790],"translate(-46.2421875, -24)",[917,932],{},[793,934,937],{"height":935,"width":936},"48","92.484375",[797,938,939],{"style":799,"xmlns":800},[804,940,943],{"className":941},[942],"nodeLabel",[436,944,945,946,949],{},"devices.yaml",[947,948],"br",{},"设备清单",[577,951,955,962],{"className":952,"transform":953,"dataLook":726,"id":954},[912,913],"translate(315.1171875, 175)","mermaid-0-flowchart-B-1",[917,956],{"className":957,"height":958,"style":923,"width":959,"x":960,"y":961},[920,921],"54","138.234375","-69.1171875","-27",[577,963,966,968],{"className":964,"transform":965,"style":923},[790],"translate(-39.1171875, -12)",[917,967],{},[793,969,972],{"height":970,"width":971},"24","78.234375",[797,973,974],{"style":799,"xmlns":800},[804,975,977],{"className":976},[942],[436,978,979],{},"GUI 或 CLI",[577,981,985,990],{"className":982,"transform":983,"dataLook":726,"id":984},[912,913],"translate(102, 175)","mermaid-0-flowchart-C-2",[917,986],{"className":987,"height":922,"style":923,"width":988,"x":989,"y":926},[920,921],"176.484375","-88.2421875",[577,991,994,996],{"className":992,"transform":993,"style":923},[790],"translate(-58.2421875, -24)",[917,995],{},[793,997,999],{"height":935,"width":998},"116.484375",[797,1000,1001],{"style":799,"xmlns":800},[804,1002,1004],{"className":1003},[942],[436,1005,1006,1007,1009],{},"commands.yaml",[947,1008],{},"只读命令模板",[577,1011,1015,1020],{"className":1012,"transform":1013,"dataLook":726,"id":1014},[912,913],"translate(102, 303)","mermaid-0-flowchart-D-4",[917,1016],{"className":1017,"height":922,"style":923,"width":1018,"x":1019,"y":926},[920,921],"188","-94",[577,1021,1024,1026],{"className":1022,"transform":1023,"style":923},[790],"translate(-64, -24)",[917,1025],{},[793,1027,1029],{"height":935,"width":1028},"128",[797,1030,1031],{"style":799,"xmlns":800},[804,1032,1034],{"className":1033},[942],[436,1035,1036,1037,1039],{},"settings.yaml",[947,1038],{},"并发、超时与阈值",[577,1041,1045,1050],{"className":1042,"transform":1043,"dataLook":726,"id":1044},[912,913],"translate(546.46875, 175)","mermaid-0-flowchart-E-7",[917,1046],{"className":1047,"height":958,"style":923,"width":1048,"x":1049,"y":961},[920,921],"224.46875","-112.234375",[577,1051,1054,1056],{"className":1052,"transform":1053,"style":923},[790],"translate(-82.234375, -12)",[917,1055],{},[793,1057,1059],{"height":970,"width":1058},"164.46875",[797,1060,1061],{"style":799,"xmlns":800},[804,1062,1064],{"className":1063},[942],[436,1065,1066],{},"Netmiko SSH 并发采集",[577,1068,1072,1077],{"className":1069,"transform":1070,"dataLook":726,"id":1071},[912,913],"translate(810.703125, 123)","mermaid-0-flowchart-F-9",[917,1073],{"className":1074,"height":958,"style":923,"width":1075,"x":1076,"y":961},[920,921],"158.671875","-79.3359375",[577,1078,1081,1083],{"className":1079,"transform":1080,"style":923},[790],"translate(-49.3359375, -12)",[917,1082],{},[793,1084,1086],{"height":970,"width":1085},"98.671875",[797,1087,1088],{"style":799,"xmlns":800},[804,1089,1091],{"className":1090},[942],[436,1092,1093],{},"原始回显 TXT",[577,1095,1099,1104],{"className":1096,"transform":1097,"dataLook":726,"id":1098},[912,913],"translate(810.703125, 227)","mermaid-0-flowchart-G-11",[917,1100],{"className":1101,"height":958,"style":923,"width":1102,"x":1103,"y":961},[920,921],"204","-102",[577,1105,1108,1110],{"className":1106,"transform":1107,"style":923},[790],"translate(-72, -12)",[917,1109],{},[793,1111,1113],{"height":970,"width":1112},"144",[797,1114,1115],{"style":799,"xmlns":800},[804,1116,1118],{"className":1117},[942],[436,1119,1120],{},"状态解析与异常判断",[577,1122,1126,1131],{"className":1123,"transform":1124,"dataLook":726,"id":1125},[912,913],"translate(1046.4921875, 175)","mermaid-0-flowchart-H-13",[917,1127],{"className":1128,"height":958,"style":923,"width":1129,"x":1130,"y":961},[920,921],"167.578125","-83.7890625",[577,1132,1135,1137],{"className":1133,"transform":1134,"style":923},[790],"translate(-53.7890625, -12)",[917,1136],{},[793,1138,1140],{"height":970,"width":1139},"107.578125",[797,1141,1142],{"style":799,"xmlns":800},[804,1143,1145],{"className":1144},[942],[436,1146,1147],{},"Excel 巡检报告",[577,1149,1153,1158],{"className":1150,"transform":1151,"dataLook":726,"id":1152},[912,913],"translate(1046.4921875, 279)","mermaid-0-flowchart-I-15",[917,1154],{"className":1155,"height":958,"style":923,"width":1156,"x":1157,"y":961},[920,921],"161.359375","-80.6796875",[577,1159,1162,1164],{"className":1160,"transform":1161,"style":923},[790],"translate(-50.6796875, -12)",[917,1163],{},[793,1165,1167],{"height":970,"width":1166},"101.359375",[797,1168,1169],{"style":799,"xmlns":800},[804,1170,1172],{"className":1171},[942],[436,1173,1174],{},"SQLite 历史库",[1176,1177,1178],"defs",{},[1179,1180,1183],"filter",{"height":1181,"id":1182,"width":1181},"130%","mermaid-0-drop-shadow",[1184,1185],"feDropShadow",{"dx":1186,"dy":1186,"floodColor":1187,"floodOpacity":1188,"stdDeviation":795},"4","#000000","0.06",[1176,1190,1191],{},[1179,1192,1195],{"height":1193,"id":1194,"width":1193},"150%","mermaid-0-drop-shadow-small",[1184,1196],{"dx":1197,"dy":1197,"floodColor":1187,"floodOpacity":1188,"stdDeviation":795},"2",[447,1199,1200],{"id":1200},"适用场景",[1202,1203,1204,1208,1211,1214,1217,1220],"ul",{},[1205,1206,1207],"li",{},"医院、学校、园区或企业内网的日常交换机巡检。",[1205,1209,1210],{},"批量采集设备版本、运行时间、CPU、内存和环境状态。",[1205,1212,1213],{},"维护交换机端口台账，快速查看接口 up\u002Fdown 数量。",[1205,1215,1216],{},"定期监控核心上联口、服务器口等重点接口。",[1205,1218,1219],{},"根据 IP、设备名称查询 ARP、MAC 或单个接口回显。",[1205,1221,1222],{},"保留巡检历史，为故障复盘和趋势对比提供数据。",[447,1224,1225],{"id":1225},"支持范围",[436,1227,1228],{},"当前内置以下设备类型：",[451,1230,1231,1252],{},[454,1232,1233],{},[457,1234,1235,1238,1244,1249],{},[460,1236,1237],{},"厂商\u002F平台",[460,1239,1240,1241],{},"推荐 ",[439,1242,1243],{},"vendor",[460,1245,1240,1246],{},[439,1247,1248],{},"device_type",[460,1250,1251],{},"命令模板",[467,1253,1254,1272],{},[457,1255,1256,1259,1264,1268],{},[472,1257,1258],{},"华为 VRP",[472,1260,1261],{},[439,1262,1263],{},"huawei",[472,1265,1266],{},[439,1267,1263],{},[472,1269,1270],{},[439,1271,1263],{},[457,1273,1274,1277,1282,1287],{},[472,1275,1276],{},"华三 Comware",[472,1278,1279],{},[439,1280,1281],{},"h3c",[472,1283,1284],{},[439,1285,1286],{},"hp_comware",[472,1288,1289,1291,1292],{},[439,1290,1281],{}," 或 ",[439,1293,1294],{},"h3c_comware",[436,1296,1297,1298,1300],{},"其他设备可以通过增加命令模板尝试接入，但 Netmiko 的 ",[439,1299,1248],{},"、设备回显格式和解析规则都需要单独验证。",[447,1302,1303],{"id":1303},"安全边界",[1305,1306,1308],"callout",{"type":1307},"warning",[436,1309,1310,1311,1315,1316,1318],{},"SwitchOps 当前定位是",[1312,1313,1314],"strong",{},"只读巡检工具","。不要在 ",[439,1317,1006],{}," 中加入保存、重启、删除或下发配置等命令。程序会主动拒绝非只读命令，但部署时仍应使用最小权限的专用巡检账号，并先在测试设备上验证。",[436,1320,1321,1322,1325],{},"当前版本不提供配置备份。",[439,1323,1324],{},"display current-configuration"," 会被只读安全校验拒绝，后续如需开放，应单独评估配置敏感信息、权限和存储安全。",[447,1327,1328],{"id":1328},"文档导航",[1202,1330,1331,1338,1344,1350,1356,1362,1368,1374],{},[1205,1332,1333,1337],{},[1334,1335,193],"a",{"href":1336},"\u002Fdocs\u002Fswitchops%E4%BA%A4%E6%8D%A2%E6%9C%BA%E5%B7%A1%E6%A3%80\u002Fquick-start","：安装依赖并完成第一次巡检。",[1205,1339,1340,1343],{},[1334,1341,198],{"href":1342},"\u002Fdocs\u002Fswitchops%E4%BA%A4%E6%8D%A2%E6%9C%BA%E5%B7%A1%E6%A3%80\u002Fdevice-config","：填写交换机、账号和重点接口。",[1205,1345,1346,1349],{},[1334,1347,203],{"href":1348},"\u002Fdocs\u002Fswitchops%E4%BA%A4%E6%8D%A2%E6%9C%BA%E5%B7%A1%E6%A3%80\u002Fgui-guide","：使用 GUI 巡检和查询。",[1205,1351,1352,1355],{},[1334,1353,208],{"href":1354},"\u002Fdocs\u002Fswitchops%E4%BA%A4%E6%8D%A2%E6%9C%BA%E5%B7%A1%E6%A3%80\u002Fcli-guide","：使用 CLI 执行巡检、查询和趋势查看。",[1205,1357,1358,1361],{},[1334,1359,213],{"href":1360},"\u002Fdocs\u002Fswitchops%E4%BA%A4%E6%8D%A2%E6%9C%BA%E5%B7%A1%E6%A3%80\u002Freports-history","：理解输出目录、Excel 和 SQLite。",[1205,1363,1364,1367],{},[1334,1365,218],{"href":1366},"\u002Fdocs\u002Fswitchops%E4%BA%A4%E6%8D%A2%E6%9C%BA%E5%B7%A1%E6%A3%80\u002Fadvanced-config","：调整并发、超时、阈值和命令模板。",[1205,1369,1370,1373],{},[1334,1371,223],{"href":1372},"\u002Fdocs\u002Fswitchops%E4%BA%A4%E6%8D%A2%E6%9C%BA%E5%B7%A1%E6%A3%80\u002Fwindows-deployment","：制作并交付 EXE。",[1205,1375,1376,1379],{},[1334,1377,228],{"href":1378},"\u002Fdocs\u002Fswitchops%E4%BA%A4%E6%8D%A2%E6%9C%BA%E5%B7%A1%E6%A3%80\u002Ftroubleshooting-security","：处理常见连接、配置和报告问题。",{"title":923,"searchDepth":1381,"depth":1381,"links":1382},2,[1383,1384,1385,1386,1387,1388],{"id":449,"depth":1381,"text":449},{"id":555,"depth":1381,"text":555},{"id":1200,"depth":1381,"text":1200},{"id":1225,"depth":1381,"text":1225},{"id":1303,"depth":1381,"text":1303},{"id":1328,"depth":1381,"text":1328},null,"认识 SwitchOps 交换机自动化巡检工具的功能、适用场景、工作流程和安全边界。","md",[1393],{"label":1394,"icon":1395,"to":1396,"target":1397},"查看源代码","lucide:git-branch","https:\u002F\u002Fgit.95669.com\u002Fdnxk\u002Fswitch-ops-netmiko","_blank",{},{"icon":191},"---\ntitle: 产品简介\ndescription: 认识 SwitchOps 交换机自动化巡检工具的功能、适用场景、工作流程和安全边界。\nupdated: 2026-09-04\nnavigation:\n  icon: lucide:house\nbadges:\n  - value: v0.1.0\n    type: secondary\n  - value: 开源项目\n    type: outline\nlinks:\n  - label: 查看源代码\n    icon: lucide:git-branch\n    to: https:\u002F\u002Fgit.95669.com\u002Fdnxk\u002Fswitch-ops-netmiko\n    target: _blank\n---\n\n# SwitchOps 交换机自动化巡检工具\n\n`switch-ops-netmiko` 是一个基于 Python、Netmiko 的交换机只读巡检工具，面向需要批量检查院内或园区网络设备的运维人员。它支持华为 VRP 和华三 Comware 设备，既可以通过 Windows 图形界面操作，也可以通过命令行接入日常自动化流程。\n\n工具会自动登录交换机、执行预设的只读命令、保存完整原始回显，并生成 Excel 巡检报告。巡检结果还可以写入 SQLite 历史库，用于查看设备状态变化趋势。\n\n## 主要能力\n\n| 能力 | 说明 |\n| --- | --- |\n| 批量巡检 | 一次巡检全部启用设备，也可以只巡检指定或勾选的设备。 |\n| 多厂商支持 | 内置华为 VRP、华三 Comware 命令模板。 |\n| 只读采集 | 仅允许 `display`、`show`、`screen-length` 等查询或分页命令。 |\n| 实时查询 | 支持单设备 ARP、MAC 地址表和接口状态查询。 |\n| 重点端口监控 | 可为核心上联、服务器或防火墙互联口配置专项状态检查。 |\n| Excel 报告 | 自动生成巡检汇总、失败设备清单和端口台账。 |\n| 原始数据留存 | 每台设备保存完整命令回显，解析不完整时仍可人工复核。 |\n| 历史趋势 | 巡检结果写入 SQLite，可按设备查看最近 CPU、内存、接口和结论。 |\n| Windows 交付 | 可通过 PyInstaller 打包为单文件 EXE，方便一线运维人员使用。 |\n\n## 工作流程\n\n```mermaid\nflowchart LR\n  A[devices.yaml\u003Cbr>设备清单] --> B[GUI 或 CLI]\n  C[commands.yaml\u003Cbr>只读命令模板] --> B\n  D[settings.yaml\u003Cbr>并发、超时与阈值] --> B\n  B --> E[Netmiko SSH 并发采集]\n  E --> F[原始回显 TXT]\n  E --> G[状态解析与异常判断]\n  G --> H[Excel 巡检报告]\n  G --> I[SQLite 历史库]\n```\n\n## 适用场景\n\n- 医院、学校、园区或企业内网的日常交换机巡检。\n- 批量采集设备版本、运行时间、CPU、内存和环境状态。\n- 维护交换机端口台账，快速查看接口 up\u002Fdown 数量。\n- 定期监控核心上联口、服务器口等重点接口。\n- 根据 IP、设备名称查询 ARP、MAC 或单个接口回显。\n- 保留巡检历史，为故障复盘和趋势对比提供数据。\n\n## 支持范围\n\n当前内置以下设备类型：\n\n| 厂商\u002F平台 | 推荐 `vendor` | 推荐 `device_type` | 命令模板 |\n| --- | --- | --- | --- |\n| 华为 VRP | `huawei` | `huawei` | `huawei` |\n| 华三 Comware | `h3c` | `hp_comware` | `h3c` 或 `h3c_comware` |\n\n其他设备可以通过增加命令模板尝试接入，但 Netmiko 的 `device_type`、设备回显格式和解析规则都需要单独验证。\n\n## 安全边界\n\n::callout{type=\"warning\"}\nSwitchOps 当前定位是**只读巡检工具**。不要在 `commands.yaml` 中加入保存、重启、删除或下发配置等命令。程序会主动拒绝非只读命令，但部署时仍应使用最小权限的专用巡检账号，并先在测试设备上验证。\n::\n\n当前版本不提供配置备份。`display current-configuration` 会被只读安全校验拒绝，后续如需开放，应单独评估配置敏感信息、权限和存储安全。\n\n## 文档导航\n\n- [快速开始](\u002Fdocs\u002Fswitchops交换机巡检\u002Fquick-start)：安装依赖并完成第一次巡检。\n- [设备清单配置](\u002Fdocs\u002Fswitchops交换机巡检\u002Fdevice-config)：填写交换机、账号和重点接口。\n- [图形界面使用](\u002Fdocs\u002Fswitchops交换机巡检\u002Fgui-guide)：使用 GUI 巡检和查询。\n- [命令行使用](\u002Fdocs\u002Fswitchops交换机巡检\u002Fcli-guide)：使用 CLI 执行巡检、查询和趋势查看。\n- [报告与历史数据](\u002Fdocs\u002Fswitchops交换机巡检\u002Freports-history)：理解输出目录、Excel 和 SQLite。\n- [高级配置](\u002Fdocs\u002Fswitchops交换机巡检\u002Fadvanced-config)：调整并发、超时、阈值和命令模板。\n- [Windows 打包部署](\u002Fdocs\u002Fswitchops交换机巡检\u002Fwindows-deployment)：制作并交付 EXE。\n- [故障排查与安全](\u002Fdocs\u002Fswitchops交换机巡检\u002Ftroubleshooting-security)：处理常见连接、配置和报告问题。\n",{"title":190,"description":1390},"2026-09-04","Dw6NcUUeyJB7WoUfyXkYXSsBlnkHvIK0uel6jWrau_I",[1405,1407],{"title":182,"path":178,"stem":179,"description":1406,"icon":183,"children":-1},"24小时无人自助系统,适合 棋牌室 台球厅 自习室 等场所使用",{"title":193,"path":194,"stem":195,"description":1408,"icon":196,"children":-1},"从获取源码、安装 Python 依赖到完成第一次交换机巡检。",1791307030626]