news 2026/10/23 7:09:24

Autelan交换机命令行配置手册:从开箱到可复现的配置基线

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Autelan交换机命令行配置手册:从开箱到可复现的配置基线

简介:《Autelan交换机产品命令行配置手册范本》面向网络工程师、IT运维人员及备考网络技术方向的读者,用于解决Autelan品牌交换机命令行操作与系统配置的实际问题。手册由傲天动联技术编写,版本V1.23,内容从命令行格式约定、五种主要命令行模式(enable、disable、exit、end、list、configure terminal等)讲起,逐步深入到系统配置管理,涵盖管理员账户的创建、删除、角色与密码设置,以及telnet、ssh接入控制、系统单板配置等模块,并附有缩略语表便于查阅。资源包共1个docx文档,大小约137KB,结构清晰、章节完整,适合作为日常配置查询与命令速查的参考范本。已有123人学习,读者可借此掌握从基础命令输入到高级网络配置的完整思路,提升交换机运维与排错效率。

1. Autelan 交换机命令行配置手册:从开箱到可复现的配置基线

拿到一台 Autelan 交换机,很多人第一反应是找 Web 界面点两下,但真正上机架、进机房、接光口之后你会发现,命令行才是唯一稳定的入口。这份 Autelan 交换机产品命令行配置手册范本,讲的不是某一条命令的语法,而是把一台出厂状态的设备,通过命令行一步步变成可管理、可回滚、可交接的生产设备。它适合三类人:刚接手 Autelan 设备的网络运维、需要给客户交付配置模板的集成工程师、以及想把手工配置沉淀成标准范本的技术负责人。核心诉求只有一个——让配置过程可复现,而不是靠记忆和玄学。下面按「先立住概念、再动手、最后避坑」的顺序展开,每一步都给出可抄的命令和参数解释。

2. 命令行入口与基础环境:Autelan 交换机的登录、视图与出厂基线

Autelan 交换机的命令行体系沿用了业界常见的分级视图模型,理解视图层级是后面所有配置的前提。很多新手翻车的点在于:在用户视图里敲了配置命令,提示无权限,然后怀疑设备坏了。其实只是没进对视图。这一章先把登录通道、视图切换、出厂状态确认讲清楚,再落到具体命令。

2.1 三种登录通道的选择与适用场景

Autelan 交换机常见做法是提供 Console、Telnet、SSH 三种入口。Console 是带外管理,设备没配 IP 也能进,适合首次上电和救砖;Telnet 配置最简单但明文传输,只建议在隔离的实验环境用;SSH 是生产环境的标准选择,需要先生成密钥对再开启服务。

首次上电我一般先接 Console,用串口工具(SecureCRT、PuTTY、minicom 都行)连上去,参数固定为 9600-8-N-1,流控关闭。这一步没有捷径,波特率错了就是一堆乱码,属于血泪经验级别的低级坑。

# 串口连接参数(以 minicom 为例) # 设备侧无需命令,这是终端侧配置 minicom -D /dev/ttyUSB0 -b 9600 # 8 数据位、无校验、1 停止位、无流控

参数说明:-b 9600是波特率,Autelan 设备默认就是这个值,改成 115200 大概率乱码;/dev/ttyUSB0是 USB 转串口线在 Linux 下的设备名,Windows 下对应 COM 口。连上后按回车,出现>或#提示符说明链路通了。

进入设备后,先确认当前视图。用户视图提示符通常是>,特权视图是#,全局配置视图是(config)#。不同固件版本提示符可能略有差异,但层级逻辑一致。

# 从用户视图进入特权视图 enable # 从特权视图进入全局配置视图 configure terminal # 退出当前视图,逐级返回 exit # 直接回到特权视图 end

逻辑说明:enable是提权,可能需要密码;configure terminal进入全局配置,之后所有全局参数都在这里改;end是后悔药,不管你在多深的子视图里,一条end直接回特权视图,比连敲多次exit高效。参数上没什么可调的,记住视图层级就行。

2.2 出厂基线确认:先看清楚再动手

接手一台设备,最忌讳上来就改配置。先做三件事:看版本、看当前配置、看接口状态。这三条命令能帮你判断设备是不是全新出厂、有没有残留配置、端口有没有被占用。

# 查看系统版本和运行时间 show version # 查看当前运行配置 show running-config # 查看接口简要状态 show interface status # 查看已保存的启动配置 show startup-config

逻辑说明:show version输出里重点看固件版本号和 uptime,uptime 很短说明刚重启过,可能有问题;show running-config是内存里的当前配置,show startup-config是闪存里下次启动加载的配置,两者不一致说明有人改了没保存;show interface status能一眼看出哪些口 up、哪些口 down、速率协商成多少。

参数说明:这几个 show 命令一般不带参数,部分版本支持| include过滤,比如show running-config | include vlan只看 VLAN 相关行。如果设备支持分页,输出长了会停在--More--,按空格翻页,按 q 退出。

出厂基线确认完之后,建议先保存一次当前状态作为回滚点。Autelan 常见做法是:

# 保存当前配置到启动配置 write memory # 或者 copy running-config startup-config

两条命令效果一样,write memory更短,老工程师习惯用这个。保存成功会有提示,失败通常是闪存写保护或空间不足,这时候别硬来,先show flash看剩余空间。

2.3 管理 IP 与远程登录的最小配置

Console 只能本地操作,要远程管理必须配管理 IP。Autelan 交换机的管理 IP 通常配在 VLAN 接口上,最常见的是 VLAN 1,但生产环境建议单独划一个管理 VLAN,别和业务混在一起。

configure terminal # 创建管理 VLAN vlan 100 description MGMT exit # 给 VLAN 接口配 IP interface vlan 100 ip address 192.168.100.10 255.255.255.0 no shutdown exit # 配默认网关,跨网段管理才需要 ip route 0.0.0.0 0.0.0.0 192.168.100.1

逻辑说明:vlan 100创建管理 VLAN,description是备注,方便后面交接;interface vlan 100进入三层接口,ip address配地址和掩码;no shutdown确保接口激活,有些版本默认就是激活的,但显式写上不会错;ip route配默认网关,只有从其他网段访问管理 IP 时才需要。

参数说明:管理 IP 选一个不冲突的地址,掩码按实际网段来;网关地址必须是同网段可达的。配完先用show interface vlan 100确认接口 up,再从同网段 ping 一下。

远程登录服务按需开启:

# 开启 telnet 服务(仅实验环境) telnet server enable # 开启 ssh 服务(生产环境推荐) ssh server enable # 创建本地用户 username admin privilege 15 password Admin@123 # 配置 vty 线路允许登录 line vty 0 4 login local transport input ssh exit

逻辑说明:username创建本地账号,privilege 15是最高权限;line vty 0 4表示允许 5 个并发远程会话;login local表示用本地账号认证;transport input ssh只允许 SSH 登录,比允许 telnet 安全。

参数说明:密码复杂度按企业策略来,privilege等级 0-15,15 是管理员。transport input可以写ssh telnet同时允许,但生产环境建议只留 ssh。配完记得write memory,否则重启就丢。

3. VLAN 与端口配置:把接入口、干道口和链路聚合一次配对

VLAN 和端口配置是交换机命令行里最高频的操作,也是最容易配错的地方。热搜里经常出现「接入口配置 access 后两个 PC 可以互通」「接入口配置 trunk 并放通 VLAN」这类问题,本质都是对端口模式和 VLAN 放通规则理解不到位。这一章把端口模式、VLAN 放通、链路聚合三块讲透。

3.1 端口模式:access 与 trunk 的本质区别

access 口属于一个 VLAN,通常接终端设备;trunk 口承载多个 VLAN,通常接上行交换机或路由器。判断标准很简单:对端是 PC、打印机、摄像头,用 access;对端是交换机、路由器、防火墙,用 trunk。

# 配置 access 口 interface gigabitethernet 0/1 switchport mode access switchport access vlan 10 description PC-Floor1 no shutdown exit # 配置 trunk 口 interface gigabitethernet 0/24 switchport mode trunk switchport trunk allowed vlan 10,20,30 description Uplink-To-Core no shutdown exit

逻辑说明:switchport mode access把端口设为接入口,switchport access vlan 10把它划进 VLAN 10;trunk 口用switchport trunk allowed vlan明确放通哪些 VLAN,不写默认放通全部,但显式写出来更安全,也方便排查。

参数说明:接口命名gigabitethernet 0/1是槽位/端口号,不同型号槽位编号不同,用show interface status确认实际名称。allowed vlan支持10,20,30列举,也支持10-20范围,还支持add和remove增量修改,比如switchport trunk allowed vlan add 40。

这里有个高频坑:两个 access 口配在同一个 VLAN,下面两台 PC 能互通;配在不同 VLAN 就不通,这是正常的。如果要求不同 VLAN 互通,需要三层转发,不是改端口模式能解决的。

3.2 VLAN 创建与批量端口划分

VLAN 要先创建再使用,虽然很多版本允许直接配端口时自动创建,但显式创建能避免混乱。

# 批量创建 VLAN vlan 10 description Office exit vlan 20 description Camera exit vlan 30 description Guest exit # 批量把端口划进 VLAN interface range gigabitethernet 0/1-0/8 switchport mode access switchport access vlan 10 exit

逻辑说明:interface range是批量操作的关键,一次进多个端口,省去重复敲命令;0/1-0/8表示 1 到 8 号口。批量配置时所有端口会应用相同参数,适合成排的工位或摄像头。

参数说明:interface range的写法各版本略有差异,有的用0/1-8,有的用0/1 to 0/8,以设备实际支持为准,敲错了会提示语法错误,不会造成破坏。批量操作前建议先show interface status确认端口范围没选错,选错了就是一片端口断网。

3.3 链路聚合:光口到底该做聚合还是主备

热搜里「交换机光口是做链路聚合还是主备」这个问题,答案取决于对端设备和对带宽的需求。链路聚合(LACP)把多条物理链路绑成一条逻辑链路,带宽叠加且冗余;主备模式只有一条活跃,另一条待命,带宽不叠加但切换简单。

# 配置 LACP 链路聚合 interface range gigabitethernet 0/23-0/24 channel-group 1 mode active exit # 配置聚合口 interface port-channel 1 switchport mode trunk switchport trunk allowed vlan 10,20,30 description Uplink-Bundle exit

逻辑说明:channel-group 1 mode active把两个物理口加入聚合组 1,active表示主动发起 LACP 协商;interface port-channel 1是逻辑聚合口,VLAN 和 trunk 配置都配在它上面,不是配在物理口上。这是新手最容易搞反的地方——物理口只加组,逻辑口才配业务。

参数说明:mode active是主动模式,对端也要配 LACP;如果对端不支持 LACP,用mode on强制聚合,但这样没有协商保护,一端配置错了可能导致环路。聚合组号 1 是本地有效,两端不需要一致。

验证聚合状态:

show etherchannel summary show lacp neighbor

show etherchannel summary里看到SU表示聚合成功且在用,P表示在聚合组里但没协商成功。如果显示P,检查两端模式是否匹配、物理口速率是否一致、VLAN 放通是否相同。

提示:链路聚合要求所有成员口的速率、双工、VLAN 配置完全一致,任何一项不同都会导致聚合失败。光口还要确认模块型号和光纤类型匹配,单模多模混用是常见翻车点。

4. 三层转发与 ACL:单臂路由、VLAN 间互通和单向访问控制

二层配完,接下来是三层。VLAN 间互通、单臂路由、ACL 单向访问是这一层的三大主题。热搜里「单臂路由配置 交换机接入口配置 access 后 2 个 PC 可以互通」和「ensp 交换机 acl 单向访问不管用」这两个问题,前者是三层转发没配通,后者是 ACL 方向搞反了。这一章把三层接口、静态路由、ACL 规则讲清楚。

4.1 VLAN 间路由:三层接口的两种实现方式

Autelan 交换机如果支持三层功能,VLAN 间互通有两种做法:一是给每个 VLAN 接口配 IP,交换机内部直接路由;二是用单臂路由,把交换机当二层用,路由器做三层转发。前者性能好,后者适合交换机不支持三层或已有路由器的场景。

# 方式一:交换机自身做三层转发 interface vlan 10 ip address 192.168.10.1 255.255.255.0 no shutdown exit interface vlan 20 ip address 192.168.20.1 255.255.255.0 no shutdown exit # 确认路由表 show ip route

逻辑说明:给 VLAN 10 和 VLAN 20 各配一个网关地址,交换机自动生成直连路由,两个网段就能互通。PC 的网关分别指向对应 VLAN 接口地址。

参数说明:VLAN 接口 IP 就是该网段的网关,选网段里第一个可用地址是惯例。配完用show ip route确认有两条直连路由,再用 PC 互 ping 验证。

# 方式二:单臂路由(交换机侧配置) interface gigabitethernet 0/24 switchport mode trunk switchport trunk allowed vlan 10,20 exit # 路由器侧需要配子接口,这里只列交换机侧

逻辑说明:单臂路由的关键在路由器侧配子接口,交换机侧只需要把上行口配成 trunk 并放通对应 VLAN。热搜里那个「access 后两个 PC 可以互通」的问题,如果两台 PC 在不同 VLAN,光配 access 是不够的,必须有三层设备做转发。

参数说明:trunk 口放通的 VLAN 必须包含所有需要互通的网段,漏放一个就不通。路由器子接口的封装 VLAN ID 要和交换机侧一致。

4.2 ACL 单向访问:规则方向和生效位置

ACL 单向访问不管用,九成是方向配反了或者应用位置错了。ACL 的匹配逻辑是:数据包进入接口时匹配 inbound 规则,离开接口时匹配 outbound 规则。要实现「A 能访问 B,B 不能访问 A」,最稳妥的做法是在 B 的入口方向拒绝 A 的流量。

# 创建扩展 ACL,拒绝 20 网段主动访问 10 网段 access-list 100 deny ip 192.168.20.0 0.0.0.255 192.168.10.0 0.0.0.255 access-list 100 permit ip any any # 应用到 VLAN 20 接口的 inbound 方向 interface vlan 20 ip access-group 100 in exit

逻辑说明:deny ip拒绝源 20 网段到目的 10 网段的流量;permit ip any any放通其他所有流量,这条必须有,否则隐式拒绝会断掉所有通信;ip access-group 100 in表示在 VLAN 20 接口的入方向应用,即从 20 网段进来的流量先过 ACL。

参数说明:0.0.0.255是反掩码,对应 255.255.255.0;ACL 编号 100 属于扩展 ACL 范围(100-199);in和out的方向判断以接口为参照,in是进入接口,out是离开接口。

这里的关键点:ACL 只对主动发起的流量生效,回包流量因为源和目的反过来了,不会被 deny 规则匹配,所以 A 访问 B 的请求被拒,但 B 已经建立的会话回包不受影响。这就是单向访问的实现原理。

验证 ACL 是否生效:

show access-lists show ip interface vlan 20

show access-lists能看到每条规则的匹配计数,如果 deny 规则计数一直是 0,说明流量没走到这条规则,检查应用方向是否正确。

4.3 静态路由与默认网关的配合

跨网段访问除了直连路由,还需要静态路由或默认网关。Autelan 交换机的静态路由配置很直接:

# 配一条到 172.16.0.0/16 的静态路由 ip route 172.16.0.0 255.255.0.0 192.168.100.1 # 配默认路由 ip route 0.0.0.0 0.0.0.0 192.168.100.1

逻辑说明:ip route三个参数分别是目的网段、掩码、下一跳;默认路由的目的网段和掩码都是 0.0.0.0,匹配所有未知目的地。

参数说明:下一跳地址必须是直连可达的,否则路由不生效。多条静态路由按最长匹配优先,掩码越长越优先。配完用show ip route确认路由表,S标记表示静态路由,C表示直连。

注意:ACL 和路由的顺序是先查路由再查 ACL,如果路由表里没有目的网段,包直接被丢弃,根本走不到 ACL。所以 ACL 不生效时,先确认路由通不通。

5. 配置保存、备份与版本管理:别让一次重启毁掉半天工作

配置改完不保存,重启就回到解放前,这是最经典的翻车场景。这一章讲保存、备份、恢复的完整流程,以及配置版本管理的基本习惯。

5.1 保存与备份的正确姿势

# 保存运行配置到启动配置 write memory # 查看启动配置确认保存成功 show startup-config # 备份配置到 TFTP 服务器 copy running-config tftp://192.168.100.200/autelan-backup.cfg

逻辑说明:write memory把内存配置写入闪存;show startup-config验证写入结果;copy命令把配置传到外部 TFTP 服务器,实现异地备份。

参数说明:TFTP 服务器地址要可达,文件名建议带日期,比如autelan-20250115.cfg。部分版本支持 FTP 和 SCP,语法类似,把tftp://换成ftp://或scp://即可。

5.2 配置恢复与回滚

# 从 TFTP 恢复配置 copy tftp://192.168.100.200/autelan-backup.cfg startup-config # 重启使配置生效 reload

逻辑说明:恢复配置写入 startup-config 后需要重启才生效,因为 running-config 还在内存里。重启前用show startup-config确认内容正确,避免恢复了一个错误版本。

参数说明:reload会提示是否保存当前配置,选 no 表示不保存直接重启,这样启动时加载的是刚恢复的 startup-config。如果选 yes,当前配置会覆盖刚恢复的内容,等于白恢复。

5.3 配置版本管理习惯

我一般要求团队每次变更前先备份,命名规则是设备名-日期-变更内容.cfg,比如sw-core01-20250115-add-vlan100.cfg。变更后再次备份,形成前后对比。这样出问题时能快速定位是哪次变更引入的。

# 变更前备份 copy running-config tftp://192.168.100.200/sw-core01-20250115-before.cfg # 执行变更... # 变更后备份 copy running-config tftp://192.168.100.200/sw-core01-20250115-after.cfg

逻辑说明:前后两份配置可以用 diff 工具对比,快速看出改了哪些行。这个习惯在多人协作环境里尤其重要,避免互相覆盖。

参数说明:文件名里不要有空格和特殊字符,TFTP 对文件名比较敏感。备份服务器建议单独一台,别和业务混用。

6. 避坑与排查:Autelan 命令行配置里最容易翻车的 5 个场景

这一章把前面提到的和没提到的坑集中列出来,每条按「现象 → 原因 → 解决」写,都是实际交付中遇到过的。

现象一:Console 连上全是乱码。原因:波特率不匹配,或者流控没关。解决:确认终端软件设为 9600-8-N-1,流控全部关闭;换一根确认好的串口线,劣质线缆也会导致乱码。

现象二:trunk 口配了 allowed vlan,但对端还是不通。原因:两端 allowed vlan 不一致,或者一端是 access 一端是 trunk。解决:两端都用show interface trunk确认放通列表,确保交集包含需要的 VLAN;端口模式必须两端匹配,trunk 对 trunk,access 对 access。

现象三:链路聚合显示 P 而不是 SU。原因:成员口速率、双工、VLAN 配置不一致,或者对端没开 LACP。解决:用show interface status逐个确认成员口参数一致;对端也要配 LACP active 或 passive,一端 active 一端 passive 可以协商,两端都 on 则没有保护。

现象四:ACL 配了但不生效。原因:方向配反、应用接口错误、或者路由不通导致包没到 ACL。解决:先show ip route确认路由通,再show access-lists看匹配计数,计数为 0 说明流量没走到这条规则,检查ip access-group应用在哪个接口的哪个方向。

现象五:保存配置后重启,配置丢了。原因:保存的是 running-config 但启动加载的是 startup-config,两者不一致;或者保存命令没执行成功。解决:每次改完必须write memory,然后用show startup-config确认内容;如果保存报错,检查闪存空间show flash。

提示:这五条里,前两条是配置逻辑问题,后三条是验证方法问题。养成「改完必验证」的习惯,能省掉大量返工。

7. 把配置手册变成可复用模板:变量化与批量交付技巧

前面六章讲的都是单台设备的配置。实际项目里往往一次要交付几十台同型号交换机,这时候靠手工敲就是灾难。我的做法是把配置手册拆成模板,用变量替换设备相关的部分,再用脚本批量生成。

先定义变量表,把每台设备不同的部分抽出来:

变量名含义示例
HOSTNAME设备名sw-floor1-01
MGMT_IP管理地址192.168.100.11
MGMT_MASK管理掩码255.255.255.0
GATEWAY默认网关192.168.100.1
UPLINK_PORT上行口gigabitethernet 0/24
VLAN_LIST放通 VLAN10,20,30

然后用一个简单的 Python 脚本做替换:

# generate_config.py # 读取模板,替换变量,输出每台设备的配置文件 template = open("autelan_template.cfg").read() devices = [ {"HOSTNAME": "sw-floor1-01", "MGMT_IP": "192.168.100.11", "MGMT_MASK": "255.255.255.0", "GATEWAY": "192.168.100.1", "UPLINK_PORT": "gigabitethernet 0/24", "VLAN_LIST": "10,20,30"}, {"HOSTNAME": "sw-floor1-02", "MGMT_IP": "192.168.100.12", "MGMT_MASK": "255.255.255.0", "GATEWAY": "192.168.100.1", "UPLINK_PORT": "gigabitethernet 0/24", "VLAN_LIST": "10,20,30"}, ] for dev in devices: cfg = template for key, val in dev.items(): cfg = cfg.replace("{{" + key + "}}", val) # 关键注释:输出文件名带设备名,避免覆盖 with open(f"{dev['HOSTNAME']}.cfg", "w") as f: f.write(cfg) print(f"generated {dev['HOSTNAME']}.cfg")

逻辑说明:模板里用{{变量名}}占位,脚本遍历设备列表做字符串替换,每台设备生成一个独立配置文件。这样模板只需要维护一份,设备差异通过变量表管理。

参数说明:devices列表可以从 CSV 或 Excel 读取,规模大了更好维护;替换用replace简单可靠,不需要引入模板引擎。生成后的配置文件可以用 TFTP 批量下发,或者直接贴进 Console。

模板本身长这样,把前面几章的配置串起来:

hostname {{HOSTNAME}} vlan 100 description MGMT exit interface vlan 100 ip address {{MGMT_IP}} {{MGMT_MASK}} no shutdown exit ip route 0.0.0.0 0.0.0.0 {{GATEWAY}} interface {{UPLINK_PORT}} switchport mode trunk switchport trunk allowed vlan {{VLAN_LIST}} exit username admin privilege 15 password Admin@123 line vty 0 4 login local transport input ssh exit write memory

逻辑说明:模板按配置逻辑顺序排列,从主机名到管理 IP 到上行口到登录账号,最后保存。每台设备生成后直接刷入,省去重复劳动。

参数说明:hostname建议带楼层和序号,方便定位;write memory放在模板最后,确保刷完即保存。批量下发前先在测试设备上验证模板,确认无误再推生产。

这套方法的价值在于:配置手册不再是死文档,而是可执行的模板。新人拿到模板和变量表就能干活,老手可以把精力放在架构设计上。我自己的习惯是每交付一个项目就更新一次模板,把新踩的坑变成模板里的注释,下次就不会再犯。希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/22 15:03:31

Multisim 14.3安装实战:从环境清理到数据库报错排查与静默部署

简介:Multisim 14.3安装包适合电子、电气相关专业学生及电路仿真入门者,可解决缺少可靠安装介质、难以部署完整仿真环境的问题,便于开展原理图绘制、电路仿真与调试练习。整个rar压缩包共270个文件,大小约872.26MB,以e…

作者头像 李华
网站建设 2026/10/23 12:04:28

DeepSeek跨框架迁移:PyTorch权重转TensorFlow实战指南

简介:针对DeepSeek模型在PyTorch与TensorFlow框架间迁移训练的完整技术文档,共197页、48个大章节,面向算法工程师与深度学习开发者,系统解决跨框架适配、权重转换、灵活训练方案落地等核心问题。文档支持目录章节跳转、书签大纲与…

作者头像 李华
网站建设 2026/10/22 22:06:21

DeepSeek API 15天实战:Python接入、提示词工程与避坑指南

简介:这份《DeepSeek人工智能平台15天从入门到精通》操作手册,面向办公人士、科研工作者、自媒体创作者、学生及编程爱好者,帮助零基础用户快速掌握AI助手的对话技巧、文档处理与自动化工作流搭建。内容从注册登录、控制台功能讲起&#xff0…

作者头像 李华
网站建设 2026/10/13 12:58:46

用 Python 打造 Skill 管理器:wxPython GUI 报 SyntaxError 的排查与修复

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华