[{"data":1,"prerenderedAt":803},["ShallowReactive",2],{"navigation":3,"blogNavigation":232,"page-\u002Fdocs\u002Fswitchops%E4%BA%A4%E6%8D%A2%E6%9C%BA%E5%B7%A1%E6%A3%80\u002Fgui-guide":418,"\u002Fdocs\u002Fswitchops%E4%BA%A4%E6%8D%A2%E6%9C%BA%E5%B7%A1%E6%A3%80\u002Fgui-guide-surround":798},[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":203,"badges":420,"body":421,"date":420,"description":790,"draft":57,"extension":791,"fullpage":57,"icon":420,"links":420,"meta":792,"navBadges":420,"navigation":793,"path":204,"rawbody":794,"seo":795,"stem":205,"updated":796,"__hash__":797},"docs\u002Fdocs\u002F3.SwitchOps交换机巡检\u002F4.gui-guide.md",null,{"type":422,"value":423,"toc":776},"minimark",[424,429,433,456,459,467,470,473,561,564,567,590,597,600,603,609,616,619,622,636,639,642,645,657,660,664,675,678,682,693,703,706,722,725,728,735,741,751,754,757,772],[425,426,428],"h2",{"id":427},"启动-gui","启动 GUI",[430,431,432],"p",{},"源码运行：",[434,435,440],"pre",{"className":436,"code":437,"language":438,"meta":439,"style":439},"language-bash shiki shiki-themes github-light github-light github-dark vitesse-light vitesse-dark catppuccin-latte catppuccin-mocha one-light one-dark-pro material-theme-lighter material-theme-palenight min-light min-dark","python main.py\n","bash","",[441,442,443],"code",{"__ignoreMap":439},[444,445,448,452],"span",{"class":446,"line":447},"line",1,[444,449,451],{"class":450},"sCf0g","python",[444,453,455],{"class":454},"s254i"," main.py\n",[430,457,458],{},"Windows EXE 部署后，可以直接双击：",[434,460,465],{"className":461,"code":463,"language":464,"meta":439},[462],"language-text","SwitchOps巡检工具.exe\n","text",[441,466,463],{"__ignoreMap":439},[430,468,469],{},"GUI 默认窗口标题为“院内交换机自动化巡检工具”。程序启动后不会自动连接设备，需要先加载设备清单。",[425,471,472],{"id":472},"界面区域",[474,475,476,489],"table",{},[477,478,479],"thead",{},[480,481,482,486],"tr",{},[483,484,485],"th",{},"区域",[483,487,488],{},"用途",[490,491,492,505,513,521,529,537,545,553],"tbody",{},[480,493,494,498],{},[495,496,497],"td",{},"配置文件栏",[495,499,500,501,504],{},"浏览并选择 ",[441,502,503],{},"devices.yaml","，加载设备清单。",[480,506,507,510],{},[495,508,509],{},"设备列表",[495,511,512],{},"显示名称、IP、厂商、型号、角色、位置和启用状态。",[480,514,515,518],{},[495,516,517],{},"过滤框",[495,519,520],{},"按设备名称或 IP 过滤当前列表。",[480,522,523,526],{},[495,524,525],{},"巡检操作区",[495,527,528],{},"全量巡检、巡检选中设备、停止任务。",[480,530,531,534],{},[495,532,533],{},"查询操作区",[495,535,536],{},"选择单台设备并查询 ARP、MAC 或接口。",[480,538,539,542],{},[495,540,541],{},"进度区",[495,543,544],{},"显示已完成、成功、失败和总数。",[480,546,547,550],{},[495,548,549],{},"运行日志",[495,551,552],{},"展示连接、命令执行、保存文件和错误信息。",[480,554,555,558],{},[495,556,557],{},"状态栏",[495,559,560],{},"显示当前任务以及最近生成的报告或查询文件。",[430,562,563],{},"双击设备列表中的某一行，可以查看该设备的详细配置摘要。界面不会显示账号密码。",[425,565,566],{"id":566},"加载设备清单",[568,569,570,574,581,584,587],"ol",{},[571,572,573],"li",{},"点击顶部“浏览”。",[571,575,576,577,580],{},"选择真实的 ",[441,578,579],{},"config\u002Fdevices.yaml","。",[571,582,583],{},"点击“加载设备”。",[571,585,586],{},"检查加载数量和启用数量。",[571,588,589],{},"确认设备名称、IP、厂商、型号和位置无误。",[430,591,592,593,596],{},"加载完成后，所有 ",[441,594,595],{},"enabled: true"," 的设备默认被勾选。可以使用“全选”“取消全选”或点击列表第一列的复选标记调整范围。",[430,598,599],{},"如果加载失败，通常是文件不存在、YAML 缩进错误或必填字段缺失。详细信息会同时显示在弹窗和日志区。",[425,601,602],{"id":602},"全量巡检",[430,604,605,606,608],{},"点击“一键巡检全部”，程序会巡检清单中所有 ",[441,607,595],{}," 的设备。",[430,610,611,612,615],{},"巡检过程会按照 ",[441,613,614],{},"settings.yaml"," 的并发数执行。每台设备完成后，进度条和成功\u002F失败计数会更新。全部完成后会弹出结果摘要，并显示 Excel 报告位置。",[430,617,618],{},"设备较多时，建议先使用少量测试设备验证账号权限、命令兼容性和报告解析，再执行全量巡检。",[425,620,621],{"id":621},"巡检选中设备",[568,623,624,627,630,633],{},[571,625,626],{},"在设备列表第一列勾选目标设备。",[571,628,629],{},"确认禁用设备不会被选入。",[571,631,632],{},"点击“巡检选中设备”。",[571,634,635],{},"等待进度完成并打开报告。",[430,637,638],{},"这适合故障复查、单区域巡检或新设备接入验证。",[425,640,641],{"id":641},"停止任务",[430,643,644],{},"点击“停止任务”后，程序会发出软停止信号：",[646,647,648,651,654],"ul",{},[571,649,650],{},"已经开始连接或执行命令的设备会先完成当前巡检。",[571,652,653],{},"尚未开始执行的设备会标记为未巡检。",[571,655,656],{},"最终仍会生成报告，便于确认哪些设备已经完成。",[430,658,659],{},"软停止不是强制断开 SSH，因此点击后可能需要等待一段时间，最长等待时间受连接和命令超时设置影响。",[425,661,663],{"id":662},"arp-查询","ARP 查询",[568,665,666,669,672],{},[571,667,668],{},"在右侧“查询设备”中选择一台启用设备。",[571,670,671],{},"“关键字”可以留空，也可以填写 IP、VLAN 或接口等过滤内容。",[571,673,674],{},"点击“查询 ARP”。",[430,676,677],{},"程序执行设备对应的 ARP 查询命令。关键字过滤发生在本地，只保留包含关键字的回显行，不会改变发送到交换机的命令。",[425,679,681],{"id":680},"mac-查询","MAC 查询",[568,683,684,687,690],{},[571,685,686],{},"选择查询设备。",[571,688,689],{},"可选填写 VLAN、MAC 地址片段或接口名作为关键字。",[571,691,692],{},"点击“查询 MAC”。",[430,694,695,696,699,700,702],{},"例如填写 ",[441,697,698],{},"Vlan10"," 后，只显示原始 MAC 地址表中包含 ",[441,701,698],{}," 的行。",[425,704,705],{"id":705},"端口查询",[568,707,708,710,716,719],{},[571,709,686],{},[571,711,712,713,580],{},"在“端口”中填写完整接口名，例如 ",[441,714,715],{},"GigabitEthernet2\u002F0\u002F7",[571,717,718],{},"可选填写关键字。",[571,720,721],{},"点击“查询端口”。",[430,723,724],{},"接口名称为空时，GUI 会阻止查询。名称是否有效由目标交换机判断。",[425,726,727],{"id":727},"查看和保存查询结果",[430,729,730,731,734],{},"查询完成后会打开独立结果窗口，同时将完整或过滤后的结果保存到当天的 ",[441,732,733],{},"queries\u002F"," 目录。例如：",[434,736,739],{"className":737,"code":738,"language":464,"meta":439},[462],"outputs\u002F2026-09-04\u002Fqueries\u002F\n├── ARP查询_核心交换机_2026-09-04_103000.txt\n├── MAC查询_核心交换机_2026-09-04_103200.txt\n└── 端口查询_核心交换机_GigabitEthernet2-0-7_2026-09-04_103500.txt\n",[441,740,738],{"__ignoreMap":439},[430,742,743,744,747,748,580],{},"文件名中的 ",[441,745,746],{},"\u002F"," 等 Windows 非法字符会自动替换为 ",[441,749,750],{},"-",[425,752,753],{"id":753},"打开输出目录",[430,755,756],{},"点击“打开输出目录”会打开：",[646,758,759,762,765],{},[571,760,761],{},"最近一次报告所在的日期目录；或",[571,763,764],{},"当前运行已经创建的日期目录；或",[571,766,767,768,771],{},"尚未运行任务时的默认 ",[441,769,770],{},"outputs"," 目录。",[773,774,775],"style",{},"html pre.shiki code .sCf0g, html code.shiki .sCf0g{--shiki-light:#6F42C1;--shiki-light-font-style:inherit;--shiki-default:#6F42C1;--shiki-default-font-style:inherit;--shiki-dark:#B392F0;--shiki-dark-font-style:inherit;--shiki-code-theme-vitesse-light:#59873A;--shiki-code-theme-vitesse-light-font-style:inherit;--shiki-code-theme-vitesse-dark:#80A665;--shiki-code-theme-vitesse-dark-font-style:inherit;--shiki-code-theme-catppuccin-light:#1E66F5;--shiki-code-theme-catppuccin-light-font-style:italic;--shiki-code-theme-catppuccin-dark:#89B4FA;--shiki-code-theme-catppuccin-dark-font-style:italic;--shiki-code-theme-one-light:#4078F2;--shiki-code-theme-one-light-font-style:inherit;--shiki-code-theme-one-dark:#61AFEF;--shiki-code-theme-one-dark-font-style:inherit;--shiki-code-theme-material-light:#E2931D;--shiki-code-theme-material-light-font-style:inherit;--shiki-code-theme-material-dark:#FFCB6B;--shiki-code-theme-material-dark-font-style:inherit;--shiki-code-theme-min-light:#6F42C1;--shiki-code-theme-min-light-font-style:inherit;--shiki-code-theme-min-dark:#B392F0;--shiki-code-theme-min-dark-font-style:inherit}html pre.shiki code .s254i, html code.shiki .s254i{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-code-theme-vitesse-light:#B56959;--shiki-code-theme-vitesse-dark:#C98A7D;--shiki-code-theme-catppuccin-light:#40A02B;--shiki-code-theme-catppuccin-dark:#A6E3A1;--shiki-code-theme-one-light:#50A14F;--shiki-code-theme-one-dark:#98C379;--shiki-code-theme-material-light:#91B859;--shiki-code-theme-material-dark:#C3E88D;--shiki-code-theme-min-light:#2B5581;--shiki-code-theme-min-dark:#9DB1C5}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .code-theme-vitesse-light .shiki span {color: var(--shiki-code-theme-vitesse-light);background: var(--shiki-code-theme-vitesse-light-bg);font-style: var(--shiki-code-theme-vitesse-light-font-style);font-weight: var(--shiki-code-theme-vitesse-light-font-weight);text-decoration: var(--shiki-code-theme-vitesse-light-text-decoration);}html.code-theme-vitesse-light .shiki span {color: var(--shiki-code-theme-vitesse-light);background: var(--shiki-code-theme-vitesse-light-bg);font-style: var(--shiki-code-theme-vitesse-light-font-style);font-weight: var(--shiki-code-theme-vitesse-light-font-weight);text-decoration: var(--shiki-code-theme-vitesse-light-text-decoration);}html .code-theme-vitesse-dark .shiki span {color: var(--shiki-code-theme-vitesse-dark);background: var(--shiki-code-theme-vitesse-dark-bg);font-style: var(--shiki-code-theme-vitesse-dark-font-style);font-weight: var(--shiki-code-theme-vitesse-dark-font-weight);text-decoration: var(--shiki-code-theme-vitesse-dark-text-decoration);}html.code-theme-vitesse-dark .shiki span {color: var(--shiki-code-theme-vitesse-dark);background: var(--shiki-code-theme-vitesse-dark-bg);font-style: var(--shiki-code-theme-vitesse-dark-font-style);font-weight: var(--shiki-code-theme-vitesse-dark-font-weight);text-decoration: var(--shiki-code-theme-vitesse-dark-text-decoration);}html .code-theme-catppuccin-light .shiki span {color: var(--shiki-code-theme-catppuccin-light);background: var(--shiki-code-theme-catppuccin-light-bg);font-style: var(--shiki-code-theme-catppuccin-light-font-style);font-weight: var(--shiki-code-theme-catppuccin-light-font-weight);text-decoration: var(--shiki-code-theme-catppuccin-light-text-decoration);}html.code-theme-catppuccin-light .shiki span {color: var(--shiki-code-theme-catppuccin-light);background: var(--shiki-code-theme-catppuccin-light-bg);font-style: var(--shiki-code-theme-catppuccin-light-font-style);font-weight: var(--shiki-code-theme-catppuccin-light-font-weight);text-decoration: var(--shiki-code-theme-catppuccin-light-text-decoration);}html .code-theme-catppuccin-dark .shiki span {color: var(--shiki-code-theme-catppuccin-dark);background: var(--shiki-code-theme-catppuccin-dark-bg);font-style: var(--shiki-code-theme-catppuccin-dark-font-style);font-weight: var(--shiki-code-theme-catppuccin-dark-font-weight);text-decoration: var(--shiki-code-theme-catppuccin-dark-text-decoration);}html.code-theme-catppuccin-dark .shiki span {color: var(--shiki-code-theme-catppuccin-dark);background: var(--shiki-code-theme-catppuccin-dark-bg);font-style: var(--shiki-code-theme-catppuccin-dark-font-style);font-weight: var(--shiki-code-theme-catppuccin-dark-font-weight);text-decoration: var(--shiki-code-theme-catppuccin-dark-text-decoration);}html .code-theme-one-light .shiki span {color: var(--shiki-code-theme-one-light);background: var(--shiki-code-theme-one-light-bg);font-style: var(--shiki-code-theme-one-light-font-style);font-weight: var(--shiki-code-theme-one-light-font-weight);text-decoration: var(--shiki-code-theme-one-light-text-decoration);}html.code-theme-one-light .shiki span {color: var(--shiki-code-theme-one-light);background: var(--shiki-code-theme-one-light-bg);font-style: var(--shiki-code-theme-one-light-font-style);font-weight: var(--shiki-code-theme-one-light-font-weight);text-decoration: var(--shiki-code-theme-one-light-text-decoration);}html .code-theme-one-dark .shiki span {color: var(--shiki-code-theme-one-dark);background: var(--shiki-code-theme-one-dark-bg);font-style: var(--shiki-code-theme-one-dark-font-style);font-weight: var(--shiki-code-theme-one-dark-font-weight);text-decoration: var(--shiki-code-theme-one-dark-text-decoration);}html.code-theme-one-dark .shiki span {color: var(--shiki-code-theme-one-dark);background: var(--shiki-code-theme-one-dark-bg);font-style: var(--shiki-code-theme-one-dark-font-style);font-weight: var(--shiki-code-theme-one-dark-font-weight);text-decoration: var(--shiki-code-theme-one-dark-text-decoration);}html .code-theme-material-light .shiki span {color: var(--shiki-code-theme-material-light);background: var(--shiki-code-theme-material-light-bg);font-style: var(--shiki-code-theme-material-light-font-style);font-weight: var(--shiki-code-theme-material-light-font-weight);text-decoration: var(--shiki-code-theme-material-light-text-decoration);}html.code-theme-material-light .shiki span {color: var(--shiki-code-theme-material-light);background: var(--shiki-code-theme-material-light-bg);font-style: var(--shiki-code-theme-material-light-font-style);font-weight: var(--shiki-code-theme-material-light-font-weight);text-decoration: var(--shiki-code-theme-material-light-text-decoration);}html .code-theme-material-dark .shiki span {color: var(--shiki-code-theme-material-dark);background: var(--shiki-code-theme-material-dark-bg);font-style: var(--shiki-code-theme-material-dark-font-style);font-weight: var(--shiki-code-theme-material-dark-font-weight);text-decoration: var(--shiki-code-theme-material-dark-text-decoration);}html.code-theme-material-dark .shiki span {color: var(--shiki-code-theme-material-dark);background: var(--shiki-code-theme-material-dark-bg);font-style: var(--shiki-code-theme-material-dark-font-style);font-weight: var(--shiki-code-theme-material-dark-font-weight);text-decoration: var(--shiki-code-theme-material-dark-text-decoration);}html .code-theme-min-light .shiki span {color: var(--shiki-code-theme-min-light);background: var(--shiki-code-theme-min-light-bg);font-style: var(--shiki-code-theme-min-light-font-style);font-weight: var(--shiki-code-theme-min-light-font-weight);text-decoration: var(--shiki-code-theme-min-light-text-decoration);}html.code-theme-min-light .shiki span {color: var(--shiki-code-theme-min-light);background: var(--shiki-code-theme-min-light-bg);font-style: var(--shiki-code-theme-min-light-font-style);font-weight: var(--shiki-code-theme-min-light-font-weight);text-decoration: var(--shiki-code-theme-min-light-text-decoration);}html .code-theme-min-dark .shiki span {color: var(--shiki-code-theme-min-dark);background: var(--shiki-code-theme-min-dark-bg);font-style: var(--shiki-code-theme-min-dark-font-style);font-weight: var(--shiki-code-theme-min-dark-font-weight);text-decoration: var(--shiki-code-theme-min-dark-text-decoration);}html.code-theme-min-dark .shiki span {color: var(--shiki-code-theme-min-dark);background: var(--shiki-code-theme-min-dark-bg);font-style: var(--shiki-code-theme-min-dark-font-style);font-weight: var(--shiki-code-theme-min-dark-font-weight);text-decoration: var(--shiki-code-theme-min-dark-text-decoration);}",{"title":439,"searchDepth":777,"depth":777,"links":778},2,[779,780,781,782,783,784,785,786,787,788,789],{"id":427,"depth":777,"text":428},{"id":472,"depth":777,"text":472},{"id":566,"depth":777,"text":566},{"id":602,"depth":777,"text":602},{"id":621,"depth":777,"text":621},{"id":641,"depth":777,"text":641},{"id":662,"depth":777,"text":663},{"id":680,"depth":777,"text":681},{"id":705,"depth":777,"text":705},{"id":727,"depth":777,"text":727},{"id":753,"depth":777,"text":753},"使用 SwitchOps GUI 加载设备、批量巡检、查询 ARP\u002FMAC\u002F端口并查看输出。","md",{},{"icon":206},"---\ntitle: 图形界面使用\ndescription: 使用 SwitchOps GUI 加载设备、批量巡检、查询 ARP\u002FMAC\u002F端口并查看输出。\nupdated: 2026-09-04\nnavigation:\n  icon: lucide:monitor\n---\n\n## 启动 GUI\n\n源码运行：\n\n```bash\npython main.py\n```\n\nWindows EXE 部署后，可以直接双击：\n\n```text\nSwitchOps巡检工具.exe\n```\n\nGUI 默认窗口标题为“院内交换机自动化巡检工具”。程序启动后不会自动连接设备，需要先加载设备清单。\n\n## 界面区域\n\n| 区域 | 用途 |\n| --- | --- |\n| 配置文件栏 | 浏览并选择 `devices.yaml`，加载设备清单。 |\n| 设备列表 | 显示名称、IP、厂商、型号、角色、位置和启用状态。 |\n| 过滤框 | 按设备名称或 IP 过滤当前列表。 |\n| 巡检操作区 | 全量巡检、巡检选中设备、停止任务。 |\n| 查询操作区 | 选择单台设备并查询 ARP、MAC 或接口。 |\n| 进度区 | 显示已完成、成功、失败和总数。 |\n| 运行日志 | 展示连接、命令执行、保存文件和错误信息。 |\n| 状态栏 | 显示当前任务以及最近生成的报告或查询文件。 |\n\n双击设备列表中的某一行，可以查看该设备的详细配置摘要。界面不会显示账号密码。\n\n## 加载设备清单\n\n1. 点击顶部“浏览”。\n2. 选择真实的 `config\u002Fdevices.yaml`。\n3. 点击“加载设备”。\n4. 检查加载数量和启用数量。\n5. 确认设备名称、IP、厂商、型号和位置无误。\n\n加载完成后，所有 `enabled: true` 的设备默认被勾选。可以使用“全选”“取消全选”或点击列表第一列的复选标记调整范围。\n\n如果加载失败，通常是文件不存在、YAML 缩进错误或必填字段缺失。详细信息会同时显示在弹窗和日志区。\n\n## 全量巡检\n\n点击“一键巡检全部”，程序会巡检清单中所有 `enabled: true` 的设备。\n\n巡检过程会按照 `settings.yaml` 的并发数执行。每台设备完成后，进度条和成功\u002F失败计数会更新。全部完成后会弹出结果摘要，并显示 Excel 报告位置。\n\n设备较多时，建议先使用少量测试设备验证账号权限、命令兼容性和报告解析，再执行全量巡检。\n\n## 巡检选中设备\n\n1. 在设备列表第一列勾选目标设备。\n2. 确认禁用设备不会被选入。\n3. 点击“巡检选中设备”。\n4. 等待进度完成并打开报告。\n\n这适合故障复查、单区域巡检或新设备接入验证。\n\n## 停止任务\n\n点击“停止任务”后，程序会发出软停止信号：\n\n- 已经开始连接或执行命令的设备会先完成当前巡检。\n- 尚未开始执行的设备会标记为未巡检。\n- 最终仍会生成报告，便于确认哪些设备已经完成。\n\n软停止不是强制断开 SSH，因此点击后可能需要等待一段时间，最长等待时间受连接和命令超时设置影响。\n\n## ARP 查询\n\n1. 在右侧“查询设备”中选择一台启用设备。\n2. “关键字”可以留空，也可以填写 IP、VLAN 或接口等过滤内容。\n3. 点击“查询 ARP”。\n\n程序执行设备对应的 ARP 查询命令。关键字过滤发生在本地，只保留包含关键字的回显行，不会改变发送到交换机的命令。\n\n## MAC 查询\n\n1. 选择查询设备。\n2. 可选填写 VLAN、MAC 地址片段或接口名作为关键字。\n3. 点击“查询 MAC”。\n\n例如填写 `Vlan10` 后，只显示原始 MAC 地址表中包含 `Vlan10` 的行。\n\n## 端口查询\n\n1. 选择查询设备。\n2. 在“端口”中填写完整接口名，例如 `GigabitEthernet2\u002F0\u002F7`。\n3. 可选填写关键字。\n4. 点击“查询端口”。\n\n接口名称为空时，GUI 会阻止查询。名称是否有效由目标交换机判断。\n\n## 查看和保存查询结果\n\n查询完成后会打开独立结果窗口，同时将完整或过滤后的结果保存到当天的 `queries\u002F` 目录。例如：\n\n```text\noutputs\u002F2026-09-04\u002Fqueries\u002F\n├── ARP查询_核心交换机_2026-09-04_103000.txt\n├── MAC查询_核心交换机_2026-09-04_103200.txt\n└── 端口查询_核心交换机_GigabitEthernet2-0-7_2026-09-04_103500.txt\n```\n\n文件名中的 `\u002F` 等 Windows 非法字符会自动替换为 `-`。\n\n## 打开输出目录\n\n点击“打开输出目录”会打开：\n\n- 最近一次报告所在的日期目录；或\n- 当前运行已经创建的日期目录；或\n- 尚未运行任务时的默认 `outputs` 目录。\n",{"title":203,"description":790},"2026-09-04","NOnUBgYA_N16zcGHgsgny0kUSbYe4UGy0_mXfazdKd4",[799,801],{"title":198,"path":199,"stem":200,"description":800,"icon":201,"children":-1},"配置 devices.yaml 中的交换机连接信息、设备类型、启停状态和重点接口。",{"title":208,"path":209,"stem":210,"description":802,"icon":211,"children":-1},"使用 SwitchOps CLI 执行全量或单设备巡检、ARP\u002FMAC\u002F端口查询和历史趋势查看。",1791307033798]