我使用 Raspberry Pi(Stretch)作为 WiFi 接入点进行一些测试。因为我想在许多 RP 上使用一个全局配置文件,所以我将其分为hostapd.conf
两部分:
hostapd.conf.global
- 描述了我的 WiFi 接入点的几乎所有参数。hostpad.conf.local
- 保存特定 RPi 的 SSID 的位置。
是否可以加入这 2 个配置文件并将其作为一个文件发送到 hostapd?
我尝试过的是发送:
cat hostapd.conf.global hostapd.conf.local | hostapd -dd
(管道命令)
但结果我得到了 hostapd 的帮助。
我也尝试过
cat hostapd.conf.global hostapd.conf.local > hostapd.conf && sudo hostapd -dd hostapd.conf
这可行,但不是管道命令相当于这个?
我对管道的理解完全错误吗?
答案1
操作符将一个命令|
连接到下一个命令。这仅适用于作为输入的下游命令。STDOUT
STDIN
STDIN
hostapd
似乎没有为此的参数(许多命令允许您提供-
文件名以表明您希望它从中读取STDIN
)。因此,您无法将配置通过管道传递给它,因为它不知道如何使用它。
你可以尝试:
cat hostapd.conf.global hostapd.conf.local | hostapd -dd /dev/stdin
看看是否有效。
这表明hostapd
要用作/dev/stdin
其配置文件...因为您已将配置文件通过管道传输到STDIN
,这应该会产生预期的效果。
答案2
另一种选择是使用某种配置管理;这可能很简单Makefile
hostapd.conf: hostapd.conf.global hostapd.conf.local
@cat hostapd.conf.global hostapd.conf.local > hostapd.conf
然后make hostapd.conf
在运行之前输入该目录hostapd
。在更复杂的方面,Ansible 和其他此类软件可以扩展到更多数量的主机,这可能比 a 更好Makefile
(相应地,您必须了解和处理的事物规模也更大)。