在 Debian 构建中,我有一个自定义init.d
脚本。我还修改了我的network
,以便在后台完成 WiFi 连接。
如何启动自定义脚本(例如custom.sh
在启动期间),但在网络启动并连接后立即运行?
目前,我正在考虑每 x 秒循环一次,并每次检查网络是否正常。一旦完成,你就跳出循环。
答案1
在 Debian 上,所有启动和停止网络连接的方法都在/etc/network
.这记录在interfaces(5)
手册页。它是 ifupdown 包的一部分,但即使界面是由 NetworkManager 等框架而不是由ifup
和命令启动或关闭的,脚本也会被执行ifdown
。
因此,将您的脚本放入/etc/network/if-up.d
.确保它包括检查您想要的接口是否已启动 - 特别是,您不希望在环回接口启动后立即执行脚本。您可以直接使用环境变量检查接口的名称IFACE
,也可以通过调用诸如 之类的命令来检查接口的名称ifconfig
,route
或者ip
检查其特征(IP 地址、网关等)。或者,您可以独立于接口进行检查,例如测试某些主机是否可访问。
请注意,脚本是按字典顺序执行的。如果您的脚本需要某些其他功能(例如 DNS)可用,请确保它晚于设置此功能的脚本。