使用配置命令和脚本实现自动化

概览

注意:旧UI中的自定义模板在新UI中被重新命名为'配置命令'。

 

很多时候,需要对设备的运行配置进行更改,甚至有时需要将同一组更改应用于多个设备。尽管网络管理员可以很好地手动编辑配置,但由于数量巨大的重复更改工作,这项任务可能会变得很困难。Network Configuration Manager通过'配置命令'、'脚本'以及'高级脚本'为此提供了一个简单的解决方案。

 

配置命令和脚本有什么好处?

  • 配置命令有助于自动执行重复且耗时的配置任务。您需要做的就是创建一个包含所需命令的小型配置,然后将其执行于许多设备的重复任务。

  • 也可以将配置命令计划在未来的任何时间点执行。这有助于在没有管理员干预的情况下执行任务。

  • 配置命令非常有助于对设备进行一次性的部分配置更改。

  • 配置命令使网络管理员能够一次将更改应用到多个设备。此外配置命令精准的提供了执行准确更改的优势。

 

配置命令和脚本如何工作?

配置命令是由用户自己根据需要定义和创建的,它包含要在设备上执行的命令(由用户提供)。可以创建一个配置命令来配置设备上的任何功能。例如您可以创建一个配置命令在cisco路由器上配置IGRP。配置命令的真正威力在于跨多个设备重复使用它来进行批量配置更新。例如单个配置命令可用于多次更改大量设备的密码。同样的用于固件升级的配置命令也可以多次用于大量设备。

 

为了增强配置命令的多次使用性,定义了“配置变量”。配置变量是值的占位符,可以在其上传到设备时进行指定。创建配置文件后,当您希望将更改上传到特定设备或多个设备时,您只需提供配置变量的值。其他一切都由Network Configuration Manager自动处理。

 

注意:创建“配置变量”是可选的。如果您想增强配置命令的多次使用性,您可以创建配置变量。

 

Network Configuration Manager中的配置命令类型

Network Configuration Manager提供的配置命令有两种类型:

  1. TFTP模式 - 用于通过TFTP将部分配置更改上传到设备。

  2. 脚本执行模式 - 命令依次在CLI控制台上执行。脚本执行进一步分为以下两种类型 -

  • 简单的脚本执行。
  • 高级脚本执行。

 

下表提供了有关每种类型的配置文件以及何时使用它们的详细信息:

 

TFTP模式

简单的脚本执行

高级脚本执行

TFTP模式是指通过TFTP将部分配置变更上传到设备。

 

例如:

 

  • 启用TELNET服务。

  • 更改SNMP社区。

  • 转发系统日志消息。

  • 接口变更。

 

在以上所有情况下,都可以使用配置上传的TFTP模式。一般来说为了对现有配置进行更改,可以使用这种模式。

 

对于其他情况,例如在设备上执行命令,必须使用脚本执行模式。

 

在CLI控制台上执行单个命令。

 

例如:同步运行和启动配置。通过在脚本中包含一行的命令copy running-config startup-config,您可以同步任意数量设备的启动和运行配置。

 

其他示例:

 

  • 更改密码。

  • 更新NTP服务器条目。

  • 获取'显示版本'的输出。

 

在命令行中在设备上执行一系列相互连接的命令。在执行一个命令之后,必须在调用下一个命令之前提供一些输入。在这种情况下,高级脚本会起到很大的帮助。

 

当命令的执行更改了设备的提示符、执行时间过长或需要细粒度控制来跟踪流时,必须使用高级脚本执行。

 

例如:将当前IOS映像备份到TFTP服务器。为此将使用以下序列:

 

  • 要使用的命令为copy flash tftp

    - 你当前IOS镜像的位置。

  • 必须指定TFTP服务器的IP。

  • 必须指定要复制的文件。

 

上面的命令执行序列可以转换为高级脚本,如下所示:

 

<command prompt=']?'>copy flash:/%SOURCE_FILE_NAME% tftp</command>

<command prompt=']?'>%TFTP_SERVER_IP%</command>

<command timeout='70'>%DESTINATION_FILE_NAME%</command>

 

其他示例:

  • 上传操作系统映像/固件升级。

  • 配置banner消息。

  • 重置HP ProCurve和Exteme Summit设备的密码。

  • 从闪存中删除文件。

 

创建配置

 

创建配置

  1. 进入"配置自动化" >> "配置" >> "所有配置" ,然后单击右上方的“添加”。

  2. 在打开的UI中,在“名称”的文本字段中为配置命令提供一个名称。在“描述”的文本字段中,提供有关此配置命令的详细信息(以便将来参考)。

  3. 创建高级脚本的指南,请参见下文。
  4. 在文本字段“配置内容”中,输入要上传到设备的配置命令。输入配置命令时,使用%<variable_name>%创建一个变量。例如:snmp-server community %COMMUNITY%  RO

  5. 当将配置变量上传到设备时,可以指定'配置变量'的值。

  6. 点击“保存”。新的配置命令将被添加到配置列表中。

 

“高级脚本执行模式”指南

 

如上所述,“高级脚本执行模式”仍然更强大,因为它提供了在命令行中针对设备执行一系列相互连接的命令的选项。要启用此功能,需要以特定格式输入要执行的命令,如下所述:

 

目的

语法

在命令行中输入要执行的命令。

<command>xyz</command>
 

例如: <command>copy startup-config tftp</command>

执行命令后应出现指定的提示。

 

这可用于固件升级、操作系统映像备份等脚本。

<command prompt=']?'>xyz</command>
 

例如: <command prompt=']?'>copy startup-config tftp</command>

(这里,提示符?放在单引号内并在右方括号之后)

 

 

注意:如果没有给出的提示符,将使用默认提示符。

执行命令后,如果您希望应用程序等待几秒钟,您可以指定以秒为单位的时间限制。

 

这可用于固件升级、操作系统映像备份等脚本。

<command timeout='70'>copy startup-config tftp</command>

 

例如: <command timeout='70'>copy startup-config tftp</command>

注意:默认超时为30秒

在执行命令时提供对查询的响应后,如果设备不希望用户在提供响应后按“ENTER”,则必须使用此语法。

 

例如当设备期望响应(回答)'Y'或者'N'而不是"ENTER"时,必须使用此语法。

 

这可用于固件升级、操作系统映像备份等脚本。

<command suffix='$NO_ENTER'>y</command>

 

注意:后缀的默认值为"ENTER",即换行。

指定执行命令后应出现的提示符。

 

这可用于固件升级、操作系统映像备份等脚本。

<command prompt='confirm'>xyz</command>

 

例如: <command prompt='confirm'>%DESTINATION_FILE_NAME%</command>

 

当命令序列在执行命令后不期望响应时,必须使用此语法。这必须与超时值结合使用,以便在两者之间等待某个时刻。

 

例如:这可用于在Cisco设备中设置banner消息。

<command prompt='$NO_RESPONSE' timeout='5'>banner %DELIMITING_CHAR%</command>

 

例如: <command prompt='$NO_RESPONSE' timeout='5'>banner %DELIMITING_CHAR%</command>

您可以为从设备下载的文件自动附加主机名和时间戳。这将有助于提取多个上下文堆栈切换配置信息并将它们作为flat文件存储在/tftp_files目录下。

 

为此添加请如此处示例所示的占位符。

<command prompt=']?'>copy running-config tftp:</command>

<command prompt=']?'>%TFTP_IP%</command>

<command>%File_Name%_<HOSTNAME_TIMESTAMP></command>

 

 

 

使用配置命令来应用更改

 

  1. 由不同用户创建的所有配置命令列表,与其他信息一起列在'配置'页面中("配置自动化" >> "配置" >> "所有配置"),例如谁创建了配置命令以及左后一次修改的时间戳。
  2. 如果您选择的执行模式是TFTP,您将在"动作"列下看到'上传'链接。 如果执行模式是“命令行”或“高级脚本执行”,您将看到“执行”的链接。

将配置命令上传到设备,

  1. 进入"配置自动化" >> "配置" >> "所有配置",然后点击“执行配置”的图标。

  2. 在打开的UI中,如果已在配置命令中创建/定义了变量,您将看到'配置变量'列表。 您有两个选项可以在此处为相应的配置变量输入所需的值。

    1. 所有设备的值相同。

    2. 每个设备的值不同,从文件中选择相应的值。
       

    所有设备的值相同

    如果要为所有设备的特定配置变量指定相同的值,请选择此选项并输入值。例如对于'%COMMUNITY%',您可以提供'public'作为值。输入值后,您可以使用完整的配置命令和社区变量的值预览实际配置。

    每个设备的值不同

    如果您想为不同的设备指定不同的值,可以以文本文件的形式提供输入,此选项在提供密码等情况下非常有用。通过此选项,您只需点击一下即可为每台设备分配唯一的密码。请确保文本文件中的条目采用以下格式:
     

    • 列标题应与配置命令中定义它的参数列标题相同,条目以逗号分隔。

    • "RESOURCE"列是强制性的,它应该是文件中的第一列,用于标识需要在执行脚本的设备。RESOURCE的值应该是主机名/IP地址,其中一行可以保存一个设备的条目。

           
      格式:

      RESOURCE,<VARIABLENAME>,<VARIABLENAME>

      示例:

      RESOURCE,PASSWORD

      192.168.1.1,abcd

      de-host,dced

      RESOURCE,IPADDRESS,MGMTINTERFACE

      de-host,192.168.122.2,vlan-mgmt

  3. 执行脚本时,Network Configuration Manager将在运行时自动选择文件中指定的值。

    注意:不会将文本文件存储在任何地方。一旦执行脚本/配置命令后,该文件将被删除。
     
  4. 输入值后,您可以使用完整的配置命令和社区变量的值预览实际配置。若要预览配置请点击“预览”。如果您选择为每个设备指定不同的值,则这些值将从上一步中提供的文件中获取。
     
  5. 若要将更改仅应用于特定的设备,请点击单选按钮“选择特定的设备”。设备列表在一个框中,您可以从该列表中选择任意数量的设备。[要将更改应用到一组设备,请点击“选择设备组”。您可以在下拉列表中选择所需的组,如果选择此选项则配置命令将上传到所选组的所有设备。]
     
  6. 默认情况下,Network Configuration Manager会在配置命令执行前后触发配置备份,您可以根据需要选择启用/禁用配置备份。在某些情况下,例如固件升级执行该命令后设备会短暂断网。在这种情况下,Network Configuration Manager将无法触发配置备份,配置执行也会失败。为了避免这种情况,您可以在创建配置命令时禁用配置备份。
     
  7. 单击“上传”(TFTP模式)或者“执行”(脚本执行/高级脚本执行模式)。配置命令中定义的配置将上传到选定的设备。

 

注意:


(1)使用“SNMP-TFTP”协议的设备不支持命令行脚本执行。

(2)配置命令的执行输出只对执行此配置命令的用户可见。这意味着,具有“操作员”和“高级用户”角色的使用者只能够查看由他们执行配置命令的输出。他们将无法查看其他用户执行配置命令的输出。但是管理员可以查看所有配置命令的输出,同时也可以删除输出。

 

命令行脚本执行的实际应用

命令行脚本执行配置命令将被证明是在多个设备上的各种批量操作的强大工具。以下是相同的几个实际应用。

更改密码

您可以使用命令行脚本一次性在多个设备上执行轮换密码。以下是可用于此目的的典型配置命令内容:

 

configure terminal

enable password xxxx

exit

 

获取所有设备的“显示版本”输出

您甚至可以执行各种命令,从单个设备或多个设备获取硬件信息。例如,只需在脚本中使用以下命令,您就可以一次获得多个设备的“显示版本”输出:

 

show version

 

更新设备上的NTP服务器条目

如果您希望更新NTP服务器详细信息的许多细节,您需要做的就是创建一个如下所示的配置命令:

 

configure terminal

ntp server x.x.x.x

exit

 

同步运行和启动配置

只需通过脚本中的一行,您就可以同步任意数量设备启动和运行的配置。

 

copy running-config startup-config

或者

copy startup-config running-config  

 

以上只是说明如何使用脚本的指示性列表,您也可以将它用于许多其他应用程序。请参阅我们的网站中提供的更多示例。

 

高级脚本执行的一些实际应用

上传操作系统映像

上传操作系统映像/固件是管理员执行的最常见操作之一。高级脚本执行可用于上传图像,图像文件可以通过TFTP传输。

以下是操作系统映像/固件上传的命令执行顺序:

  • 将IOS映像复制到TFTP服务器。

  • 提供用于复制图像的命令。

  • 提供TFTP服务器IP。

  • 提供源文件名来将其复制到闪存。

  • 提供必须复制的目标文件名。

 

上面的命令执行序列可以转换为高级脚本,如下所示:

 

<command prompt="]?"></command>

<command prompt=']?'>copy tftp: flash:</command>

<command prompt=']?'>%TFTP_SERVER_IP%</command>

<command prompt=']?'>%SOURCE_FILE_NAME%</command>

<command prompt='confirm'>%DESTINATION_FILE_NAME%</command>

<command timeout='120' suffix='$NO_ENTER'>y</command>

 

在上面的示例中,占位符已用于源文件名、TFTP服务器IP和目标文件名。在执行此高级脚本时,可以为这个占位符提供值。该脚本可以一次性用于许多设备。

 

将当前IOS映像备份到TFTP服务器

要将您当前的IOS映像备份到TFTP服务器,将使用以下顺序:

  • 要使用的命令为copy flash <filename> tftp
    <filename> -当前IOS镜像的位置。

  • 必须指定TFTP服务器的IP。

  • 必须指定要复制的文件。

 

上面的命令执行序列可以转换为高级脚本,如下所示:

 

<command prompt="]?">

<command prompt=']?'>copy flash:/%SOURCE_FILE_NAME% tftp</command>

<command prompt=']?'>%TFTP_SERVER_IP%</command>

<command timeout='70'>%DESTINATION_FILE_NAME%</command>

 

在上面的示例中,占位符已用于源文件名、TFTP服务器IP和目标文件名。在执行此高级脚本时,可以为这个占位符提供值。该脚本可以一次性用于许多设备。

 

配置Banner消息

您可以使用高级脚本执行编辑一个或一组设备的现有banner消息。每次尝试与设备连接时,用户都会看到此banner消息。

通常所需的banner消息将在两个分隔字符中输入,例如在#和#之间。这两个字符之间的所有内容都将显示为banner消息。分隔符不会成为banner消息的一部分。

以下是配置banner息的命令执行顺序:

  • 进入配置终端模式。

  • 提供用于配置banner消息的命令。

  • 提供分隔符。

  • 提供banner消息。

  • 再次通过分隔符指定消息的结尾。

 

上面的命令执行序列可以转换为高级脚本,如下所示:

 

<command></command>

<command>conf t</command>

<command prompt='$NO_RESPONSE' timeout='5'>banner %DELIMITING_CHAR%</command>

<command prompt='$NO_RESPONSE' timeout='5'>%BANNER_LINE_1%</command>

<command prompt='$NO_RESPONSE' timeout='5'>%BANNER_LINE_2%</command>

<command>%DELIMITING_CHAR%</command>

<command>end</command>

 

在上面的示例中,占位符已用于分隔字符和Banner消息。在执行此高级脚本时,可以为这个占位符提供值。该脚本可以一次性用于许多设备。

 

重置HP ProCurve设备的密码

使用“高级脚本执行”模式,您可以重置HP ProCurve设备的密码。

以下是重置密码的命令执行顺序:

  • 进入配置终端模式。

  • 提供重置密码的命令。

  • 输入新密码。

  • 确认新密码。

 

上面的命令执行序列可以转换为高级脚本,如下所示:

 

<command></command>

<command>conf t</command>

<command prompt='$NO_RESPONSE' timeout='5'>password manager</command>

<command prompt='$NO_RESPONSE' timeout='5'>%PASSWORD%</command>

<command prompt='$NO_RESPONSE' timeout='5'>%PASSWORD%</command>

<command>end</command>

 

 

在上面的示例中,占位符已用于输入和确认新密码。在执行此高级脚本时,可以为这个占位符提供值。该脚本可以一次性用于许多设备。

 

从闪存中删除文件

Cisco IOS映像存储在闪存中。因此当您安装新的IOS映像时,需要确保您的设备有足够的闪存来支持该映像。如果设备内存不足,则必须从闪存中删除文件。这可以使用高级脚本来实现。

以下将是命令执行的顺序:

  • 要使用的命令为delete flash <filename>
    <filename> - 要删除的文件名称。

  • 该序列将寻求删除确认。需要输入<filename>作为确认标志。

  • 确认后不应跟随"ENTER"。

 

上面的命令执行序列可以转换为高级脚本,如下所示:

<command prompt="]?"></command>

<command prompt=']?'>delete flash:/%FILE_NAME%</command>

<command prompt='confirm'>%FILE_NAME%</command>

<command suffix='$NO_ENTER'>y</command>

 

在上面的示例中,占位符已用于要删除的文件名称。在执行此高级脚本时,可以为这个占位符提供值。该脚本可以一次性用于许多设备。  

 

计划配置

所有三种类型的配置命令 - TFTP模式、脚本执行模式和高级脚本都可以安排在未来的某个时间点执行。有关详细信息,请参阅计划部分下面的内容。

 

管理配置命令和脚本

 

要查看/编辑配置命令,

如果您要查看已创建的配置命令内容或想要编辑它,

  1. 进入 "配置自动化" >> "配置" >> "所有配置",点击要查看的配置命令名称。
  2. 在打开的UI中,执行所需的更改并点击“保存”。

删除配置命令,

  1. 进入"配置自动化" >> "配置" >> "所有配置",并选择要删除的配置命令。
  2. 点击右上角的“删除”。此配置命令将被永久删除。