使用Augeas在XML文件中创建或更新部分
发布时间:2020-12-16 23:07:28 所属栏目:百科 来源:网络整理
导读:我想更新 XML配置文件中的一个部分,或者如果已经使用Augeas不存在则添加一个新部分. XML文件如下所示: ?xml version="1.0"?security users ... user iddeployment/id firstNameDeployment/firstName lastNameUser/lastName passwordsomepasshere/password s
我想更新
XML配置文件中的一个部分,或者如果已经使用Augeas不存在则添加一个新部分.
XML文件如下所示: <?xml version="1.0"?> <security> <users> ... <user> <id>deployment</id> <firstName>Deployment</firstName> <lastName>User</lastName> <password>somepasshere</password> <status>active</status> <email>changeme1@yourcompany.com</email> </user> </users> </security> 如果ID已经存在,我想更新姓氏/名字/电子邮件,如果是新ID,我想添加新用户部分. 在AugTool中我使用: augtool> set /augeas/load/Xml/lens Xml.lns augtool> set /augeas/load/Xml/incl /security.xml augtool> load 我还在学习Augeas,所以这是我第一次尝试获取节点: augtool> print /files/security.xml/security/users/user/*[ #text= 'deployment'] 在用户中更新或创建新部分用户的命令是什么? 谢谢! 解决方法
首先,使用最近的Augeas版本(> = 1.0.0),您可以使用–transform来设置转换.假设文件是??./users.xml:
$augtool -r . --noautoload --transform "Xml.lns incl /users.xml" augtool> defnode user /files/users.xml/security/users/user[id/#text="deployment"] # Create a new user entry if it doesn't exist yet,assign node to the "user" variable augtool> set $user/id/#text "deployment" # Set id if node was just created augtool> set $user/firstName/#text "Deployment" # Set firstName augtool> set $user/lastName/#text "User" # Set lastName augtool> set $user/email/#text "changeme1@yourcompany.com" # set email ... augtool> save Saved 1 file(s) 您甚至可以将其转换为脚本,例如user.augtool: #!/usr/bin/augtool -sf defnode user /files/users.xml/security/users/user[id/#text="deployment"] set $user/id/#text "deployment" set $user/firstName/#text "Deployment" set $user/lastName/#text "User" set $user/email/#text "changeme1@yourcompany.com" 然后你可以启动: $chmod +x user.augtool $./user.augtool --transform "Xml.lns incl /users.xml" -r . Saved 1 file(s) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |