是否有用于验证 /etc/network/interfaces 文件的工具?

Bry*_*gee 31 server configuration networking

我总是喜欢在部署之前测试新的配置文件——使用apachectl configtestnamed-checkconf.

出现错误的情况很少见,但在部署之前捕获它们可以消除任何影响。在背后咬了我好几次的是/etc/network/interfaces;我似乎找不到测试它的工具,并且在远程机器上重新启动网络却发现它不再可用是很烦人的——尤其是当我们使用大量绑定和桥接时。

Dre*_*kes 32

扩展@jdthood的答案......

如果接口已经启动,您仍然可以使用此方法来验证/etc/network/interfaces文件。例如,假设您有错误,您可能会看到如下内容:

$ sudo ifup --no-act eth0
/etc/network/interfaces:11: unknown method
ifup: couldn't read interfaces file "/etc/network/interfaces"
Run Code Online (Sandbox Code Playgroud)

显然第 11 行有错误。太好了。谢天谢地,我没有反弹网络只是为了失去 SSH 访问!

如果一切正常,您将看到:

$ sudo ifup --no-act eth0
ifup: interface eth0 already configured
Run Code Online (Sandbox Code Playgroud)


jdt*_*ood 9

以下可能会做你想要的一部分。

ifup --no-act eth0
Run Code Online (Sandbox Code Playgroud)


小智 9

如果您没有 eth0,这将不起作用,例如:

Ignoring unknown interface eth0=eth0.
Run Code Online (Sandbox Code Playgroud)

但如果你这样做:

ifup -a --no-act ; echo "status: $?"
Run Code Online (Sandbox Code Playgroud)

使用确定配置:

ifup -a --no-act ; echo "status: $?"
run-parts  /etc/network/if-pre-up.d
run-parts  /etc/network/if-up.d
status: 0
Run Code Online (Sandbox Code Playgroud)

使用非确定配置:

ifup -a --no-act ; echo "status: $?"
/etc/network/interfaces:12: option with empty value
ifup: couldn't read interfaces file "/etc/network/interfaces"
status: 1
Run Code Online (Sandbox Code Playgroud)