命令行为什么要分那么多层模式?唯一目的是防误操作。 每改一次配置多敲一条 enable,一天多花一两分钟,换的是「不会误重启核心设备」。
上一节讲怎么连上,这一节讲连上之后怎么敲。 这一节不讲具体命令,讲「为什么这么设计」——懂了设计就不会乱敲。
一、五层模式
模式 提示符 能做什么 危险度
用户模式 大于号 只看少量信息 低 特权模式 井号 看全部信息、重启、备份 中 全局配置模式 (config) 改全局参数 高 接口配置模式 (config-if) 改某个接口 高 路由协议模式 (config-router) 改协议参数 高
「看」与「改」分两层的理由:「看」是安全的,「改」是危险的。 特权模式正好卡在中间——要改配置必须先过它,而过它需要额外一条命令或密码。
二、这个设计挡住的是什么
挡住的是「手滑」。
比如你想敲「显示运行配置」,在用户模式下这条命令根本不存在, 输入时就会报错,而不会误执行「重启」。 再比如「删除全部配置」这种命令要连敲两层确认——多一层就是多一次「想清楚」的机会。
多一层的成本很低:每天改 20 次,多敲 20 次,每次 5 秒,合计 1.7 分钟。 一天一两分钟,换「不会误重启核心设备」——这笔交易在任何场景下都划算。
三、提示符是最重要的信息
提示符里的括号说明你现在在哪一层,而这一层决定「你敲的命令会改什么」。
所以养成一个习惯:每次敲命令之前看一眼提示符。 在 (config-if) 里敲全局参数会报错, 而在全局模式里敲接口命令也会报错——报错是好事,它说明你在错误的层,没造成损害。
真正危险的是「层对、命令也对、但设备不对」: 开着一堆窗口,在 A 设备的窗口里敲了本该在 B 设备上敲的命令。 所以「设备名要配得能一眼认出来」不是洁癖,是防事故。
四、两条权限实践
一、给特权模式设独立密码,别与登录密码相同。因为登录密码可能被共享,而特权密码要更严格。 二、给不同角色分不同权限:只读账号只能进用户模式,运维能进特权,管理员才能进配置。 这是审计要求,也是防误操作的最后一层。
还有一条实践: 配置变更要走「旁路审阅」——把要敲的命令先写在纸上或文档里,review 一遍再敲。 因为命令行的即时性太强,敲错了回车就已经生效了。 这一点与图形界面的「改完点确定」完全不同。
五、动手 Demo:命令行为什么要分那么多层模式
这段列出五层模式的提示符、能力与危险度,再按「每次改动多敲一条 enable、 约 5 秒」算两档改动频次下每天多花多少时间。
for n in (20, 100):
P(u" 每天 %d 次改动:多花 %.1f 分钟。" % (n, n * 5 / 60.0))
实跑输出:
--------------------------------------------------------------------
命令行为什么要分那么多层模式
--------------------------------------------------------------------
**分层的唯一目的是「防误操作」。**这一节把常见的四层列清。
模式 提示符 能做什么 危险度
---------------------------------------------------------------------------
用户模式 > 只看少量信息 低
特权模式 # 看全部信息、重启、备份 中
全局配置模式 (config)# 改全局参数 高
接口配置模式 (config-if)# 改某个接口 高
路由协议模式 (config-router)# 改协议参数 高
**为什么「看」与「改」要分两层**:因为「看」是安全的,「改」是危险的。
**特权模式这一层正好卡在中间**——**要改配置必须先过它,而过它需要额外一条命令(或密码)。**
**这个设计挡住的是「手滑」**:比如你想敲 `show running-config`,
**在用户模式下这条命令根本不存在**,输入时就会报错,而不会误执行 `reload`。
**算一下「多一层」的成本**:每次改配置要多敲一条 `enable`,按每天改 20 次算:
每天 20 次改动:多敲 20 次,每次约 5 秒,合计 1.7 分钟。
每天 100 次改动:多敲 100 次,每次约 5 秒,合计 8.3 分钟。
**一天多花一两分钟,换来的是「不会误重启核心设备」。**
**这笔交易在任何场景下都划算。**
**实践中的两条**:
1. **给特权模式设独立密码**(enable secret),别与登录密码相同。
2. **给不同角色分不同权限**(比如只读账号只能进用户模式),
**这是审计要求,也是防误操作的最后一层。**
「1.7 分钟」这个数字算出来是很有说服力的: 它把「安全」换算成了「时间成本」,而结论是「成本可以忽略」。 跟业务方沟通时这种换算比讲原理有效。
「报错是好事」这一句值得强调:命令行里报错意味着「什么都没发生」, 而沉默往往意味着「已经生效了」。 所以新人怕报错是反的——该怕的是「敲下去没反应」。
最后「设备名要能一眼认出来」这一条来自真实事故: 在多窗口操作时敲错设备,是运维里最经典也最不可原谅的错误之一。 把设备名里带上「位置 + 角色」,是最低成本的防护。
30 秒实验
- 登录一台设备,从用户模式一层层进到接口配置模式,观察提示符变化。
- 在错误的层敲一条命令,看它怎么报错。
- 查一下设备有没有配只读账号。
常见误区
- 以为分层是「老设计」。它挡的是手滑,一直有效。
- 以为报错是操作失败。报错往往比沉默安全。
- 以为配置错了能撤销。命令行的 undo 不是万能的。
自测三问(点开对答案)
1. 命令行分层模式的目的是什么? —— 防误操作:把「看」与「改」分开,关键操作多一层确认。 2. 特权模式在分层设计里起什么作用? —— 卡在「看」与「改」之间,进入需要额外命令或独立密码。 3. 为什么说「报错是好事」? —— 报错说明命令未执行,而沉默往往意味着已经生效。下一节:敲完的命令去哪了——保存。
- ☐ (本节完,下一节 03.09.03 保存设置的方法)