跳过导航链接 | |
退出打印视图 | |
![]() |
在 Oracle Solaris 11.1 中使用 DHCP Oracle Solaris 11.1 Information Library (简体中文) |
您可以将 DHCP 客户机设置为运行可执行程序或脚本,这些程序或脚本可执行任何适用于客户机系统的操作。出现特定的 DHCP 租用事件之后,便会自动执行称为事件脚本的程序或脚本。可以使用事件脚本来运行其他命令、程序或者脚本以响应特定的租用事件。您必须提供自己的事件脚本以使用此功能。
dhcpagent 使用以下事件关键字来标识 DHCP 租用事件:
说明
将接口配置为用于 DHCP。客户机从 DHCP 服务器接收确认消息 (DHCPv4 ACK) 或 (DHCPv6 Reply),此消息同意租用 IP 地址的请求。成功配置接口之后,便会立即调用事件脚本。
客户机成功地延长了租用期。当客户机从 DHCP 服务器接收续订请求的确认消息之后,便会立即调用事件脚本。
租用时间结束时租用即到期。对于 DHCPv4,将在从接口中删除租用地址,并将接口标记为关闭之前的瞬间调用事件脚本。对于 DHCPv6,将在从接口中删除最后剩余的租用地址之前调用事件脚本。
客户机结束租用,将接口从 DHCP 控制中删除。系统会在将接口从 DHCP 控制中删除之前的瞬间调用事件脚本。
客户机放弃 IP 地址。在客户机释放接口上的地址并将 DHCPv4 RELEASE 或 DHCPv6 Release 包发送到 DHCP 服务器之前的瞬间调用事件脚本。
接口通过 DHCPv4 INFORM 或 DHCPv6 Information-Request 消息从 DHCP 服务器获取新的或更新的配置信息。当 DHCP 客户机从服务器仅获取配置参数而不获取 IP 地址租用时,将出现这些事件。
在租用失效期间,如果仍然存在一个或多个有效租用,则在删除失效地址之前将调用该事件脚本。被删除的地址标记有 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 事件,则程序或脚本就会向日志文件中写入消息,如果是其他事件,则会忽略。
使脚本或程序不进行交互。调用事件脚本之前,stdin、stdout 和 stderr 将连接到 /dev/null。要查看输出或错误,您必须重定向到文件。
事件脚本从 dhcpagent 继承其程序环境,并以 root 特权运行。如有必要,脚本可以使用 dhcpinfo 实用程序来获取有关接口的更多信息。有关更多信息,请参见 dhcpinfo(1) 手册页。
dhcpagent 守护进程将等待事件脚本在所有事件上退出。如果事件脚本在 55 秒内没有退出,则 dhcpagent 会向脚本进程发送 SIGTERM 信号。如果又经过 3 秒之后进程仍没有退出,则守护进程会发送 SIGKILL 信号以中止此进程。
dhcpagent(1M) 手册页包含一个事件脚本的示例。