您如何在 JunOS 中为命令设置别名?

网络工程 瞻博网络
2021-07-16 16:42:29

在过去的几天里,我一直在寻找一种简单的方法来做到这一点,但发现没有一种简单的方法可以做到这一点。大多数答案是:

  • 手头的问题太复杂了。
  • 如果没有 SLAX 的先验知识,很难理解。
1个回答

我与一位在 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;
    }
}

运行脚本:

  1. 您的脚本(文件名)必须以 .slax
  2. 您的脚本必须位于/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/

  1. 复制文件后,您必须启用它们。这可以防止任何可以将文件复制到设备的人执行具有潜在破坏性的脚本。

R1# set system scripts op file filename.slax R1# show | compare R1# commit and-quit

  1. 如果您使用多个 RE:

R1# commit synchronize and-quit

  1. 在操作模式提示下:

R1> op filename.slax

你已经完成了,我希望这会有所帮助。