有别于H3C、Cisco的CLI,Juniper 设备在配置模式下面做了更改是不会立即生效的,需要在配置模式下面敲入commit命令提交才能生效。个人认为这算是JunOS CLI的一个好用的功能。玩法如下。
需求一、给每次变更加个注释
变更完成后,执行 commit comment <注释内容>,系统会自动给这次commit记录一条注释信息,需要查看的话,执行show system commit即可,输出如下
1 2017-06-10 21:39:25 CST by <登录用户名> via cli <注释内容>
每一次变更的内容一目了然。
需求二、只检查配置的正确性,不让配置生效
执行commit check 即可
需求三、让更改提交在指定的时间点生效
commit at "YYYY-MM-DD HH:MM:SS"
出现类似如下提示表明定时器生效
configuration check succeeds
commit at will be executed at 2006-12-31 23:59:59 CST
The configuration has been changed but not committed
Exiting configuration mode
例如,我需要删除一条不用的策略,但是现在还有业务在跑,需要等明天凌晨六点之后再删。对付这种需求,commit at命令就非常好用。
已经设置定时但是尚未执行的配置提交被Juniper称为Pending commit,执行show system commit,最上面一行会显示
commit requested by admin via cli at 2017-06-11 06:00:00 CST
这种情况下,设备的配置文件会被锁定,再执行commit命令会直接报错。
[edit]
georg@warsaw# commit
error: Another commit is pending
如果这时需要取消定时提交怎么办呢?执行下面一条命令就可以了。
clear system commit
需求四、配置提交后自动回滚(敲黑板,划重点了!)
几乎每个网络工程师都有远程配设备翻车把自己关外面的经历,例如给H3C的设备配置AAA认证,稍有不慎,你就可以提着Console线去一趟机房了。Junos的配置更改和生效并不是同步发生的,我们只要在commit命令后面加上confirmed参数,如果没有收到二次确认,设备就会在指定的时间后自动回滚配置,防止配置提交后把自己关外面的情况。具体命令为:
commit confirmed <分钟数>
验证配置无误后,要进行二次确认,直接再commit一次就ok了,自动回滚会被取消掉,配置就永久生效了。
参考资料:
https://www.juniper.net/documentation/en_US/junos/topics/task/configuration/junos-software-commit-operation-scheduling.html
https://kb.juniper.net/InfoCenter/index?page=content&id=KB8708