Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

在 NETCONF Perl 客户端应用程序中以交互方式收集参数

在 NETCONF Perl 客户端应用程序中,脚本可以通过命令行以交互方式获取对象所需的 NET::Netconf::Manager 参数。

NETCONF Perl 分配包括多个示例 Perl 脚本,用于在运行 Junos OS 的设备上执行各种功能。每个示例脚本都会从调用脚本 NET::Netconf::Manager 的用户提供的命令行选项中获取对象所需的参数。脚本使用 getopts Perl 模块中 Getopt::Std 定义的功能从命令行中读取选项,然后以名为 %opt的 Perl 哈希记录选项。(生产环境中使用的脚本可能无法以交互方式获得参数,因此本节对于了解示例脚本非常重要。)

以下示例引用了 https://github.com/Juniper/netconf-perl/tree/master/examples/get_chassis_inventory NETCONF Perl GitHub 存储库中的 get_chassis_inventory.pl 示例脚本。

注意:

在 Junos OS 16.1 版之前,每个 Junos OS 版本都包括与版本相关的 NETCONF Perl 客户端的全新版本。从 Junos OS 16.1 版开始,NETCONF Perl 客户端与版本无关,托管在 GitHub 和 CPAN 上,可以管理运行任何 Junos OS 版本的设备。NETCONF Perl 发行版的与版本相关的示例脚本与 GitHub 和 CPAN 上托管的与版本无关版本中的示例脚本不同。

该功能的第一个参数 getopts 定义可接受选项,这些选项因应用而异。选项字母后的冒号表示它采用参数。

第二个参数 \%opt, 指定这些值记录在 %opt 散列中。如果用户未至少提供一个选项、提供无效选项或提供 -h 该选项,则脚本将 output_usage 调用子程序,该子程序会向屏幕打印使用消息。

以下代码为 get_chassis_inventory.pl 示例脚本定义output_usage子程序。定义和WhereOptions部分的内容my $usage特定于脚本,并且因每个应用程序而异。

get_chassis_inventory.pl 脚本包括以下代码,用于从命令行获取对象所需NET::Netconf::Manager参数的值。遵循完整的代码示例,详细讨论各种功能单元。

在上述代码示例的第一行中,脚本使用 Perl shift 函数从命令行末尾读取主机名。如果缺少主机名,则脚本将 output_usage 调用子程序来打印使用消息,用于指定需要主机名。

接下来,脚本确定要使用哪种访问协议,将 $access 变量设置为命令行选项的值 -m 。如果指定的值与常量定义 VALID_ACCESSES 的唯一有效值不匹配,则脚本将 output_usage 调用子程序以打印使用消息。

然后,脚本会确定用户名,将 $login 变量设置为命令行选项的值 -l 。如果未提供选项,则脚本会进行提示,并使用 ReadLine 函数(在标准 Perl Term::ReadKey 模块中定义)从命令行读取选项。

脚本最终会确定用户名的密码,将 $password 变量设置为命令行选项的值 -p 。如果未提供选项,则脚本将提示输入选项。它使用 ReadMode 功能(在标准 Perl Term::ReadKey 模块中定义)两次:首先防止密码在屏幕上出现明显回显,然后在读取密码后将 shell 返回到正常(回显)模式。

版本历史记录表
释放
描述
16.1
从 Junos OS 16.1 版开始,NETCONF Perl 客户端与版本无关,托管在 GitHub 和 CPAN 上,可以管理运行任何 Junos OS 版本的设备。NETCONF Perl 发行版的与版本相关的示例脚本与 GitHub 和 CPAN 上托管的与版本无关版本中的示例脚本不同。