Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

在 Junos 设备上使用 sysctl() 扩展功能

Junos OS 和 Junos OS Evolved 在 *类似 nix 的操作系统上运行,使您能够检索各种内核状态和进程信息。您可以在自动化脚本中调用 sysctl() 扩展函数来检索相同的内核状态信息,类似于您在 sysctl shell 中使用命令检索这些值的方式。此 sysctl() 函数采用的变量名称与在 shell 中为 sysctl 命令提供的变量名称相同。变量名称是 MIB 样式的名称,使用一组虚线的组件。由于 Junos OS 基于 FreeBSD,而 Junos OS Evolved 在 Linux 上原生运行,因此每个操作系统的 sysctl 变量和变量名称不同。

注意:

您可以在 shell 中执行 sysctl -a 命令,以查看可用状态的完整列表以及作为函数参数 sysctl() 提供的相应名称。但是,输出可能非常广泛。

例如,在 Junos OS 上,以下示例 SLAX 操作脚本将检索并打印 sysctl 状态 kern.hostnamehw.product.model

同样,在 Junos OS 演化版上,以下示例 SLAX 操作脚本将检索并打印 sysctl 状态 kernel.hostnamekernel.osrelease

注意:

对于 Junos OS 演化版,返回类型始终为字符串 (“s”)。如果省略类型参数,则默认值为“s”。

Junos OS 和 Junos OS Evolved 具有不同的 sysctl 状态名称,因为底层操作系统不同。例如,在 Junos OS 中,您可以检索内核状态 hw.product.model,但 Junos OS Evolved 没有类似的 sysctl 变量名称。在这些情况下,您可以使用 RPC 或其他方式检索相同的信息。

例如,以下 SLAX 操作脚本执行 get-software-information RPC 以检索 Junos OS Evolved 上的模型名称,这相当于在 Junos OS 上返回sysctlhw.product.model值。

如果在脚本中调用 sysctl() 函数并指定不存在的 sysctl 变量名称,则 Junos OS 不会生成错误,但 Junos OS Evolved 会 sysctl error: No such file or directory 生成错误。

例如,假设 sysctl() 函数请求的值 hw.product.model,这是 Junos OS 上有效的 sysctl 变量名称,但在 Junos OS Evolved 上不是有效的 sysctl 变量名称。如果在运行 Junos OS Evolved 的设备上执行脚本,则脚本会发出以下输出: