我正在设置一个嵌入式 Linux 设备,它应该在启动时从文件系统中的文件获取其 IP 地址和 MAC 地址。假设有一个文件/root/ipaddress
,其内容仅有 "192.168.10.10" 和/root/macaddress
"02:02:02:02:02:02" 。其余配置不应是可配置的。
目前,网络配置是通过 完成的ifup -i /etc/interfaces -a
,其中 IP 地址在以下节中定义:
# The loopback network interface
#auto lo
#iface eth0 inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.10.10
netmask 255.255.255.0
我尝试在 /etc/interfaces 文件中使用环境变量但没有成功。
我可以使用命令构建一个脚本ip
,在其中再次关闭接口,配置 IP 和 MAC 地址,然后再次启动。然而,这似乎效率很低。
答案1
ifupdown
脚本集并非旨在以这种方式工作。
相反,您可以:
- 停止使用
ifupdown
并设法在专用脚本中自行配置网络。 (我可能会选择这个选项) - 使用
post-up
的功能ifupdown
,这样:
iface eth0 inet static
pre-up ifconfig eth0 hw ether `cat /root/macaddress`
address 0.0.0.0
netmask 255.255.255.0
post-up ifconfig eth0 `cat /root/ipaddress`
请注意,我没有测试 post-up 是否能够管理反引号构造。 ..
也许您还可以挖掘manual
方法(而不是static
)......