Augeas 编辑选项(如果存在),否则添加 - 同时引用新创建的节点

Augeas 编辑选项(如果存在),否则添加 - 同时引用新创建的节点

我想做类似的事情:

set /files/etc/exports/dir[. = '/export/home'][client = '10.0.0.0/8'] /export/home
set /files/etc/exports/dir[. = '/export/home'][client = '10.0.0.0/8']/client 10.0.0.0/8

如果我运行上述命令,会发生什么情况?第二个命令会创建另一个新节点,且不设置任何目录值。我的挑战是 /export/home share 不是唯一的目录,因为客户端被添加到新行中以提高可读性。我需要目录和客户端搜索选项来找到唯一的节点。

我如何在命令 1 中引用(可能)新创建的节点,以便最终结果是:

/export/home 10.0.0.0/8()

答案1

Augeas 有一种叫做定义节点执行设置命令并将结果节点存储在指定的变量中。

我的问题的解决方案:

defnode newdir /files/etc/exports/dir[. = '/export/home' and client = '10.0.0.0/8'] /export/home
set $newdir/client 10.0.0.0/8
set $newdir/client/option[1] rw
set $newdir/client/option[2] async
set $newdir/client/option[3] no_subtree_check

*编辑: 更改][and以提高可读性

相关内容