前三是理论。这一篇开始动手,做一些简单的实验操作。
一、我第一次敲命令,就被拒绝了
我照着课件敲了第一句 display version,出来了版本信息,还挺有成就感。
然后我直接敲 ip address 192.168.1.1 24------报错了。
我当时以为是命令写错了,翻书翻了半天。后来才明白:不是命令错,是我站错地方了。
华为的命令是按"区域"分区的,这个区域叫视图(view)。
<Huawei> // 用户视图:只能查询、测试
<Huawei>system-view
[Huawei] // 系统视图:全局配置
[Huawei]interface GigabitEthernet 0/0/0
[Huawei-GigabitEthernet0/0/0] // 接口视图:只对这个口生效
[Huawei-GigabitEthernet0/0/0]quit // 退一级
[Huawei]return // 一步回用户视图(或 Ctrl+Z)
判断自己在哪,只看提示符的括号 :尖括号 < > 是用户视图,方括号 [ ] 是配置视图。方括号里前面那段还会告诉你当前在哪个接口下。
我后来养成一个习惯:命令敲不进去,先看提示符,别先怀疑自己拼错。
二、一条命令其实是三段式
搞懂视图之后,还有个东西让我看帮助信息时特别懵------那些 [] 里的一大串到底哪些是必填、哪些是可选?
后来发现命令的结构其实很简单:命令字 + 关键字 + 参数。
display ip interface GE0/0/0
| | | |
命令字 关键字 参数名 参数值
- 命令字:干什么(display = 显示)
- 关键字:进一步限定(ip、interface)
- 参数:参数名 + 参数值(GE0/0/0)
reboot 这种只有命令字,也能执行。所以"命令必须三部分齐全"是错的,最少一部分就够。
拆得出这三段,看帮助信息时就不会被括号吓到:尖括号 < > 里是必选参数,方括号 [ ] 里是可选参数。
三、? 和 Tab:我第三天才开始用
这两个键我是第三天才开始用的,之前一直在翻 PPT 找命令。
?:在当前位置列出能敲什么。display ?会列出 display 后面所有可接的参数。Tab:补全。敲到不歧义的前几个字母,按 Tab 自动补全关键字。
有了 ?,你其实不需要背命令------你只需要记得"我想干什么"这个词的开头,剩下的让设备告诉你。
我现在的习惯是:不确定就先 ? 一下,比翻资料快得多。
四、报错里那个 ^ 是干什么的
刚学的时候看到报错,我基本是扫一眼就重敲。后来发现它其实在告诉我具体哪个位置出错了:
[R1]ip address 192.168.1.1
^
Error: Incomplete command found at '^' position.
那个 ^ 指的位置,就是设备"读不下去"的地方。
三种常见报错,对应的改法完全不同:
| 报错 | 意思 | 怎么改 |
|---|---|---|
Incomplete command |
命令没写完 | 补全后面的关键字 |
Unrecognized command |
没这个词 | 检查拼写,或这版设备不支持 |
Ambiguous command |
指令不唯一 | 多打几个字母,或按 Tab 补全 |
看懂这个之后,排错效率高了一截。报错不是骂你,是定位。
五、为什么有些命令我明明敲对了也不让用
这个坑我是在做第二个实验时才踩到的。
当时我配了远程登录,从另一台设备登录进去,想改点东西,结果:
<R1>system-view
Error: You do not have permission to run the command.
命令没错、视图也没错,是权限不够。
华为设备有两套"级别"在起作用:
- 用户级别:这个账号能干什么(0--15,数越大权限越高)
- 命令级别:这条命令需要什么级别(0--4,参观级、监控级、配置级、管理级)
规则一句话:低级别用户只能执行等于或低于自己级别的命令。
所以那个实验里,我把 VTY 用户设成 1 级,就是故意的------为了验证"级别 1 只能看,不能改"。
这个设计其实挺合理:巡检的人配 1 级(只能看),管理员配 3 级(能改)。一台设备,两种权限,不用给两套账号。
六、我在这篇里踩的坑,汇总一下
- 命令敲不进去先看括号 ,
< >下敲interface是无效的。 - 密码输入时屏幕没反应,不是卡住,是密码本来就不回显。连按回车反而会把命令敲乱。
- 报错里的
^是指位置,不是装饰。 display打头的命令在哪个视图都能用 ,因为它是查询类;但interface、ip address这些必须在对应视图下。
七、一点学习心得
这一篇学完,我最大的转变是:不再试图"背命令"了。
一开始我总想记住所有命令怎么写,结果记了忘、忘了记。后来发现命令行的设计逻辑是"你只要表达清楚想干什么,设备会带着你走"------? 会告诉你下一步能填什么,Tab 会帮你补全,报错会指出错在哪。
所以真正需要记住的其实只有三件事:
- 我在哪个视图(看括号)
- 我想干什么(命令字)
- 对谁干(参数)
剩下的都能现场问出来。
这个认知对我后面学路由、学交换帮助很大------命令变多了,但套路没变