在 Oracle® Solaris 11.2 中使用 DHCP

退出打印视图

更新时间: 2014 年 7 月
 
 

DHCP 客户机事件脚本

您可以将 DHCP 客户机设置为运行可执行程序或脚本,这些程序或脚本可执行任何适用于客户机系统的操作。出现特定的 DHCP 租用事件之后,便会自动执行称为事件脚本的程序或脚本。可以使用事件脚本来运行其他命令、程序或者脚本以响应特定的租用事件。您必须提供自己的事件脚本以使用此功能。

dhcpagent 使用以下事件关键字来标识 DHCP 租用事件:

事件关键字

说明

BOUNDBOUND6

将接口配置为用于 DHCP。客户机从 DHCP 服务器接收确认消息 (DHCPv4 ACK) 或 (DHCPv6 Reply),此消息同意租用 IP 地址的请求。成功配置接口之后,便会立即调用事件脚本。

EXTENDEXTEND6

客户机成功地延长了租用期。当客户机从 DHCP 服务器接收续订请求的确认消息之后,便会立即调用事件脚本。

EXPIREEXPIRE6

租用时间结束时租用即到期。对于 DHCPv4,将在从接口中删除租用地址,并将接口标记为关闭之前的瞬间调用事件脚本。对于 DHCPv6,将在从接口中删除最后剩余的租用地址之前调用事件脚本。

DROPDROP6

客户机结束租用,将接口从 DHCP 控制中删除。系统会在将接口从 DHCP 控制中删除之前的瞬间调用事件脚本。

RELEASERELEASE6

客户机放弃 IP 地址。在客户机释放接口上的地址并将 DHCPv4 RELEASE 或 DHCPv6 Release 包发送到 DHCP 服务器之前的瞬间调用事件脚本。

INFORMINFORM6

接口通过 DHCPv4 INFORM 或 DHCPv6 Information-Request 消息从 DHCP 服务器获取新的或更新的配置信息。当 DHCP 客户机从服务器仅获取配置参数而不获取 IP 地址租用时,将出现这些事件。

LOSS6

在租用失效期间,如果仍然存在一个或多个有效租用,则在删除失效地址之前将调用该事件脚本。被删除的那些地址标记有 IFF_DEPRECATED 标志。

如果出现以上任意一种事件,dhcpagent 都会调用以下命令:

/etc/dhcp/eventhook interface event

其中,interface 是使用 DHCP 的接口,而 event 是前面所述的事件关键字之一。例如,当接口首次配置为用于 DHCP 时,dhcpagent 会按如下方式调用事件脚本:

/etc/dhcp/eventhook net0 BOUND

    要使用事件脚本功能,您必须执行以下操作:

  • 将可执行文件命名为 /etc/dhcp/eventhook

  • 将文件的属主设置为 root

  • 将权限设置为 755 (rwxr-xr-x)。

  • 编写脚本或程序来执行一系列操作以响应记录的事件。由于 Sun 可能会添加新事件,因此,程序必须自动忽略所有无法识别或不需要执行操作的事件。例如,如果是 RELEASE 事件,则程序或脚本就会向日志文件中写入消息,如果是其他事件,则会忽略。

  • 使脚本或程序不进行交互。调用事件脚本之前,stdinstdoutstderr 将连接到 /dev/null。要查看输出或错误,您必须重定向到文件。

事件脚本从 dhcpagent 继承其程序环境,并以 root 特权运行。如有必要,脚本可以使用 dhcpinfo 实用程序来获取有关接口的更多信息。有关更多信息,请参见 dhcpinfo(1) 手册页。

dhcpagent 守护进程将等待事件脚本在所有事件上退出。如果事件脚本在 55 秒内没有退出,则 dhcpagent 会向脚本进程发送 SIGTERM 信号。如果又经过 3 秒之后进程仍没有退出,则守护进程会发送 SIGKILL 信号以中止此进程。

dhcpagent(1M) 手册页包含一个事件脚本的示例。