在过去的几天里,我一直在寻找一种简单的方法来做到这一点,但发现没有一种简单的方法可以做到这一点。大多数答案是:
- 手头的问题太复杂了。
- 如果没有 SLAX 的先验知识,很难理解。
在过去的几天里,我一直在寻找一种简单的方法来做到这一点,但发现没有一种简单的方法可以做到这一点。大多数答案是:
我与一位在 JunOS 中实施 OAM 的客户合作,显示统计信息的 show 命令很笨拙。他们想要一种无需每次需要检索统计信息时都输入完整命令的方法。
这就是我的意思:
show oam ethernet connectifity-fault-management sla-iterator-statistics sla-iterator ITERATOR maintenance-domain MD maintenance-association MA local-mep 100 remote-mep 101
我明白为什么这会变得很烦人,那么我们怎样才能把它变成更短的单行呢?JunOS 无法为操作系统内置的命令设置别名。我们可以做的是使用 SLAX 脚本。一开始有点讨厌,但还是不错的。
剧本”:
我将使用一个更基本的命令来保持简短,但您可以将代码中看到的 show 命令替换为您想要使用的任何其他 show 命令。也可以随意为您的用例使变量成为更连贯的名称。
version 1.0;
ns junos = "http://xml.juniper.net/junos/*/junos";
ns xnm = "http://xml.juniper.net/xnm/1.1/xnm";
ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0";
import "../import/junos.xsl";
match / {
<op-script-results> {
var $variable1 = <rpc> {
<command format="text"> "show interfaces terse";
}
var $variable2 = jcs:invoke($variable1);
<output> $variable2;
}
}
运行脚本:
.slax
/var/db/scripts/op/
框中。如果您使用冗余路由引擎,则它必须存在于上述同一目录中的两个 RE 上。以下是将文件从一个 RE 复制到另一个 RE 的方法:file copy re0:/var/db/scripts/op/filename.slax re1:/var/db/scripts/op/filename.slax
file list re1:/var/db/scripts/op/
R1# set system scripts op file filename.slax
R1# show | compare
R1# commit and-quit
R1# commit synchronize and-quit
R1> op filename.slax
你已经完成了,我希望这会有所帮助。