netcfg - 创建并修改外部网络修饰器 (External Network Modifier, ENM)
netcfg
netcfg subcommand [ options...]
netcfg [-d] -f command-file
netcfg help [subcommand]
netcfg 实用程序处理外部网络修饰器 (External Network Modifier, ENM)。netcfg 可以通过单个子命令或指定一个包含一系列子命令的命令文件以交互方式调用。
顾名思义,外部网络修饰器 (External Network Modifier, ENM) 是 NWAM 服务的外部应用程序,它可以修改和/或创建网络配置。nwamd 可根据 ENM 中指定的条件来激活或取消激活 ENM。或者,用户可根据需要选择手动激活/取消激活 ENM。
ENM 提供附加的灵活性,允许用户指定对 SMF 服务属性和/或状态或要在特定条件下应用的任何其他系统设置的更改。
NWAM 服务将所需的属性值存储在配置文件中,以此管理配置。随后,它根据当前的网络条件确定哪个 ENM 应该在给定的时间处于活动状态。
netcfg 命令在作用域内执行。有两个作用域:全局和 enm。如果不带任何参数调用 netcfg,则会在全局作用域内开始编辑会话。在全局范围内,可以对 ENM 执行操作。如果选择某个 ENM,会将编辑会话移至 enm 作用域。
在 enm 作用域内,可以查看和修改 ENM 的属性。
在交互模式下,调用提交之前不会将更改存储到持久性存储器。提交会在“结束”或“退出”时隐式调用,也可由用户显式调用。在调用提交时,将提交整个 ENM。为了维护持久性存储器的一致性,提交操作中加入了一个验证步骤;如果验证失败,则提交也会失败。如果隐式提交失败,则将为用户提供结束或退出的选项而不提交当前更改,或者保留在当前作用域内进行进一步更改。
netcfg 支持以下 ENM 属性:
用于自动激活此 ENM 的触发器类型。
缺省值为 manual。
如果 activation-mode 是 manual,则 enabled 属性将反映 ENM 的当前状态。此属性是只读属性;通过使用 netadm(8) 启用或禁用 ENM,可间接更改此属性。
缺省值为 false。
如果 activation-mode 设置为 conditional-all 或 conditional-any,则此属性会指定测试来确定是否应激活此 ENM。条件表达式由可赋予布尔值的一系列条件组成,例如 "system-domain is oracle.com" 或 "interface net0 is-not active"。下面的“条件表达式”一节中定义了这些表达式的格式。如果指定了多个条件,则要满足激活要求,要么所有条件均为真(当 activation-mode 是 conditional-all 时),要么任何一个条件为真(当 activation-mode 是 conditional-any 时)。
注意 advertised-domain 与 system-domain 之间的区别。声明域可通过外部通信方式了解,例如 DHCP 服务器声明的 DNSdmain 或 NISdmain。系统域是当前分配给系统的域,即由 |domainname| 命令返回的值。
如果此 ENM 已作为 SMF 服务执行,则此属性会标识该服务。如果指定了此属性,则在激活 ENM 时,将启用相应的 SMF 服务。取消激活 ENM 时,将禁用 SMF 服务。
如果此 ENM 未作为 SMF 服务执行,则此属性会标识应执行以启动或激活 ENM 的命令。如果已设置 FMRI 属性,则将忽略此属性。
如果此 ENM 未作为 SMF 服务执行,则此属性会标识应执行以停止或取消激活 ENM 的命令。如果已设置 FMRI 属性,则将忽略此属性。
ENM 可以基于一组用户指定的条件进行激活。下表概述了这些条件表达式的语法。
|
Object Type Condition Object ------------------------------------------------------------ essid is/is-not/contains/does-not-contain name string bssid is/is-not bssid string ip-address is/is-not IPv4 or IPv6 address ip-address is-in-range/is-not-in-range IPv4 or IPv6 address plus netmask/prefixlen advertised-domain is/is-not/contains/does-not-contain name string system-domain is/is-not/contains/does-not-contain name string
以下选项与任何特定的 netcfg 子命令无关联:
在从命令文件(请参见以下选项)读取子命令之前删除所有配置。
从 command_file 读取并执行 netcfg 子命令。
所支持的子命令如下。
结束当前 ENM 指定,而不向持久性存储器提交当前所做的更改,然后进入下一更高级别的作用域。
此子命令在 enm 作用域中有效。
清除指定属性的值。
此子命令在 enm 作用域中有效。
将当前 ENM 提交至持久性存储器。由于配置必须正确才能提交,因此该操作还会自动对 ENM 执行验证。在离开当前作用域(使用 end 或 exit 子命令)时,会自动尝试执行提交操作。
此子命令在 enm 作用域中有效。
请注意,在非交互模式中不需要进行提交,这是由于更改值的任何子命令均采用隐式提交。
以给定的名称创建内存中 ENM。–t template 选项指定新的 ENM 应该与 template 完全相同,其中 template 是现有 ENM 的名称。如果不使用 –t 选项,则以缺省值创建新的 ENM。
此子命令在全局范围内有效。
使用 –a 选项删除所有 ENM,或者从内存和持久性存储器中删除指定的 ENM。此操作是即时操作,不需要提交。已销毁的 ENM 无法进行恢复。
此子命令在全局范围内有效。
结束当前 ENM 指定,然后进入下一更高级别的作用域。在结束前将验证并提交当前 ENM;如果验证或提交失败,则会发出一条相应的错误消息,并为用户提供结束机会,而不提交当前所做的更改,或者保留在当前作用域中继续进行编辑。
此子命令在任何作用域中均有效。
退出 netcfg 会话。在结束前将验证并提交当前配置文件;如果验证或提交失败,则会发出一条相应的错误消息,并为用户提供退出机会,而不提交当前所做的更改,或者保留在当前作用域中继续进行编辑。
此子命令在任何作用域中均有效。
将当前 ENM 或指定的 ENM 输出到标准输出,或输出到使用 –f 选项指定的文件。–d 选项生成 "destroy –a" 作为首行输出。此子命令以适用于命令文件的格式生成输出。
此子命令在任何作用域中均有效。
获取指定属性的当前(内存中)值。缺省情况下,将会同时列显属性名称和属性值;如果指定了 –V 选项,则只会显示属性值。
此子命令在 enm 作用域中有效。
显示一般帮助或有关特定子命令的帮助。
此子命令在任何作用域中均有效。
列出当前作用域或指定作用域中存在的所有 ENM、属性值对和资源。当列出某个 ENM 的属性时,缺省行为是仅列出设置了值的属性。包含 –a 选项将导致列出所有属性,无论这些属性是否设置了值。
此子命令在任何作用域中均有效。
删除对当前 ENM 所做的任何当前更改,并恢复为持久性存储器中的值。
此子命令在 enm 作用域中有效。
选择给定的 ENM 并向下跳转到 ENM 作用域。所选 ENM 将从持久性存储器装入到内存中。
此子命令在全局范围内有效。
设置指定属性的当前(内存中)值。如果在非交互模式下执行,则会同时将所做的更改提交到持久性存储器。
用于分隔多值属性的值的分隔符是 ","(逗号)。如果此类属性中的任何单个值包含逗号,则必须对其进行转义(即写为 \,)。如果属性只有一个值,其中的逗号不会被解释为分隔符,因此无需进行转义。
此子命令在 enm 作用域中有效。
验证当前的内存中 ENM 的配置是否有效。
此子命令在 enm 作用域中有效。
遍历与当前 ENM 关联的每个属性。对于每个属性,均会显示名称和当前值,并给出提示以便用户更改当前值。
用于分隔多值属性的值的分隔符是 ","(逗号)。如果此类属性中的任何单个值包含逗号,则必须对其进行转义(即写为 \,)。如果属性只有一个值,其中的逗号不会被解释为分隔符,因此无需进行转义。
缺省情况下,只会遍历对于已设置的属性而言所需要的属性;也就是说,如果将 activation-mode 设置为 manual,则不会遍历条件。包含 –a 选项将导致遍历所有可用的属性。
此子命令在 enm 作用域中有效。
此子命令仅在交互模式下有意义。
以下命令从命令行列出所有可用的 ENM。
# netcfg list ENMs: enmtest myenm示例 2 创建有条件的 ENM
以下命令序列根据接口 net0 的状态以交互方式创建有条件的 ENM。
# netcfg netcfg> create enm1 Created enm 'enm1'. Walking properties ... activation-mode (manual) [manual|conditional-any|conditional-all]> conditional-all conditions> interface net0 is active fmri> start> /usr/bin/start stop> netcfg:enm:enm1> list enm:enm1 activation-mode conditional-all conditions "interface net0 is active" enabled false start "/usr/local/bin/enm1" netcfg:enm:enm1> commit Committed changes netcfg:enm:enm1> end netcfg:> exit示例 3 销毁 ENM
以下命令从命令行销毁 ENM。
# # netcfg destroy myenm示例 4 处理 ENM
以下命令序列选择现有的 ENM、显示其内容并更改属性值。
# netcfg netcfg>select myenm netcfg:enm:myenm>list enm:myenm activation-mode manual enabled true start "/usr/local/bin/myenm start" stop "/usr/local/bin/myenm stop" netcfg:enm:myenm>set stop="/bin/alt_stop" netcfg:enm:myenm>list enm:myenm activation-mode manual enabled true start "/usr/local/bin/myenm start" stop "/bin/alt_stop" netcfg:enm:myenm>exit Committed changes示例 5 将当前配置导出到文件
以下命令将当前配置导出到文件。
netcfg> export -f /tmp/nwam.config
或者,从 Unix 命令行执行同样的任务:
# netcfg export -f /tmp/nwam.config示例 6 从文件中导入当前配置
以下命令从文件中导入当前配置。
# netcfg -f /tmp/nwam.config
有关下列属性的说明,请参见 attributes(7):
|