Go to main content

手册页部分 8:系统管理命令

退出打印视图

更新时间: 2018年8月8日 星期三
 
 

netcfg(8)

名称

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 属性

activation-mode:枚举值:manual | conditional-all | conditional-any

用于自动激活此 ENM 的触发器类型。

缺省值为 manual

enabled:布尔值:true | false

如果 activation-mode 是 manual,则 enabled 属性将反映 ENM 的当前状态。此属性是只读属性;通过使用 netadm(8) 启用或禁用 ENM,可间接更改此属性。

缺省值为 false

conditions:字符串列表:conditional expressions

如果 activation-mode 设置为 conditional-allconditional-any,则此属性会指定测试来确定是否应激活此 ENM。条件表达式由可赋予布尔值的一系列条件组成,例如 "system-domain is oracle.com" 或 "interface net0 is-not active"。下面的“条件表达式”一节中定义了这些表达式的格式。如果指定了多个条件,则要满足激活要求,要么所有条件均为真(当 activation-modeconditional-all 时),要么任何一个条件为真(当 activation-modeconditional-any 时)。

注意 advertised-domainsystem-domain 之间的区别。声明域可通过外部通信方式了解,例如 DHCP 服务器声明的 DNSdmainNISdmain。系统域是当前分配给系统的域,即由 |domainname| 命令返回的值。

fmri:字符串:service FMRI

如果此 ENM 已作为 SMF 服务执行,则此属性会标识该服务。如果指定了此属性,则在激活 ENM 时,将启用相应的 SMF 服务。取消激活 ENM 时,将禁用 SMF 服务。

start:字符串:start command

如果此 ENM 未作为 SMF 服务执行,则此属性会标识应执行以启动或激活 ENM 的命令。如果已设置 FMRI 属性,则将忽略此属性。

stop:字符串:stop command

如果此 ENM 未作为 SMF 服务执行,则此属性会标识应执行以停止或取消激活 ENM 的命令。如果已设置 FMRI 属性,则将忽略此属性。

条件表达式

ENM 可以基于一组用户指定的条件进行激活。下表概述了这些条件表达式的语法。

对象类型
对象
条件
link|interface|enm
name
活动/不活动
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 子命令无关联:

–d

在从命令文件(请参见以下选项)读取子命令之前删除所有配置。

–f command_file

command_file 读取并执行 netcfg 子命令。

子命令

所支持的子命令如下。

cancel

结束当前 ENM 指定,而不向持久性存储器提交当前所做的更改,然后进入下一更高级别的作用域。

此子命令在 enm 作用域中有效。

clear prop-name

清除指定属性的值。

此子命令在 enm 作用域中有效。

commit

将当前 ENM 提交至持久性存储器。由于配置必须正确才能提交,因此该操作还会自动对 ENM 执行验证。在离开当前作用域(使用 endexit 子命令)时,会自动尝试执行提交操作。

此子命令在 enm 作用域中有效。

请注意,在非交互模式中不需要进行提交,这是由于更改值的任何子命令均采用隐式提交。

create [ –t template ] enm-name

以给定的名称创建内存中 ENM。–t template 选项指定新的 ENM 应该与 template 完全相同,其中 template 是现有 ENM 的名称。如果不使用 –t 选项,则以缺省值创建新的 ENM。

此子命令在全局范围内有效。

destroy { –a | object-type [ class ] object-name }

使用 –a 选项删除所有 ENM,或者从内存和持久性存储器中删除指定的 ENM。此操作是即时操作,不需要提交。已销毁的 ENM 无法进行恢复。

此子命令在全局范围内有效。

end

结束当前 ENM 指定,然后进入下一更高级别的作用域。在结束前将验证并提交当前 ENM;如果验证或提交失败,则会发出一条相应的错误消息,并为用户提供结束机会,而不提交当前所做的更改,或者保留在当前作用域中继续进行编辑。

此子命令在任何作用域中均有效。

exit

退出 netcfg 会话。在结束前将验证并提交当前配置文件;如果验证或提交失败,则会发出一条相应的错误消息,并为用户提供退出机会,而不提交当前所做的更改,或者保留在当前作用域中继续进行编辑。

此子命令在任何作用域中均有效。

export [ –d ] [ –f output-file ] [ enm-name ]

将当前 ENM 或指定的 ENM 输出到标准输出,或输出到使用 –f 选项指定的文件。–d 选项生成 "destroy –a" 作为首行输出。此子命令以适用于命令文件的格式生成输出。

此子命令在任何作用域中均有效。

get [ –V ] prop-name

获取指定属性的当前(内存中)值。缺省情况下,将会同时列显属性名称和属性值;如果指定了 –V 选项,则只会显示属性值。

此子命令在 enm 作用域中有效。

help [ subcommand ]

显示一般帮助或有关特定子命令的帮助。

此子命令在任何作用域中均有效。

list [ –a ] [ enm-name ]

列出当前作用域或指定作用域中存在的所有 ENM、属性值对和资源。当列出某个 ENM 的属性时,缺省行为是仅列出设置了值的属性。包含 –a 选项将导致列出所有属性,无论这些属性是否设置了值。

此子命令在任何作用域中均有效。

revert

删除对当前 ENM 所做的任何当前更改,并恢复为持久性存储器中的值。

此子命令在 enm 作用域中有效。

select enm-name

选择给定的 ENM 并向下跳转到 ENM 作用域。所选 ENM 将从持久性存储器装入到内存中。

此子命令在全局范围内有效。

set prop-name= value1[,value2...]

设置指定属性的当前(内存中)值。如果在非交互模式下执行,则会同时将所做的更改提交到持久性存储器。

用于分隔多值属性的值的分隔符是 ","(逗号)。如果此类属性中的任何单个值包含逗号,则必须对其进行转义(即写为 \,)。如果属性只有一个值,其中的逗号不会被解释为分隔符,因此无需进行转义。

此子命令在 enm 作用域中有效。

verify

验证当前的内存中 ENM 的配置是否有效。

此子命令在 enm 作用域中有效。

walkprop [ –a ]

遍历与当前 ENM 关联的每个属性。对于每个属性,均会显示名称和当前值,并给出提示以便用户更改当前值。

用于分隔多值属性的值的分隔符是 ","(逗号)。如果此类属性中的任何单个值包含逗号,则必须对其进行转义(即写为 \,)。如果属性只有一个值,其中的逗号不会被解释为分隔符,因此无需进行转义。

缺省情况下,只会遍历对于已设置的属性而言所需要的属性;也就是说,如果将 activation-mode 设置为 manual,则不会遍历条件。包含 –a 选项将导致遍历所有可用的属性。

此子命令在 enm 作用域中有效。

此子命令仅在交互模式下有意义。

示例

示例 1 列出所有 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)

属性类型
属性值
可用性
system/network
接口稳定性
Committed(已确定)

另请参见

attributes(7)netadm(8)netcfgd(8)nwamd(8)