Ansible - 在 CentOS 6 中删除登录窗口
Posted
技术标签:
【中文标题】Ansible - 在 CentOS 6 中删除登录窗口【英文标题】:Ansible - Remove login window in CentOS 6 【发布时间】:2020-10-01 09:44:50 【问题描述】:我为 CentOS 工作站编写了一个强化脚本,但我被困在 Cent6 系统的进程中,我想删除登录屏幕并让用户输入他们的登录 ID。
文件是:
/etc/gconf/gconf.xml.defaults/%gconf-tree.xml
这是我要编辑的行:
<entry name="disable_user_list" mtime="1558109430" type="schema" stype="bool" owner="gdm-simple-greeter" gettext_domain="gdm">
<local_schema locale="C" short_desc="Do not show known users in the login window">
<default type="bool" value="false"/>
<longdesc>Set to true to disable showing known users in the login window.</longdesc>
</local_schema>
</entry>
我需要编辑的行是:
value="false"
到:
value="true"
因为此文件中有多个“disabe_user_list”,我不确定如何使用inlinefile
选项来编辑此特定字段。我很确定可能有一个我可以使用的正则表达式,但我想不通。
有人有什么想法吗?
【问题讨论】:
你考虑过docs.ansible.com/ansible/latest/modules/xml_module.html吗? 对 xml 使用正则表达式总是在我脑海中浮现 :) ***.com/a/1732454/2123530 【参考方案1】:TL;DR;
这里有一个可能的解决方案
- xml:
path: /etc/gconf/gconf.xml.defaults/%gconf-tree.xml
xpath: "/entry[@name='disable_user_list']/local_schema[@short_desc='Do not show known users in the login window']/default[@type='bool']"
attribute: value
value: "true"
xml
模块似乎比使用正则表达式更好。
这可能是适合您的解决方案,但是,当然,您必须使用文件中可能包含的其他 disabe_user_list
条目来验证这一点。
本剧本中的 XPath 认为此条目是唯一的,基于以下事实:
entry
节点被命名为disable_user_list
entry
下的local_schema
节点有一个short_desc
阅读“不要在登录窗口中显示已知用户”
local_schema
下的default
节点属于type
:bool
基于此,任务将定位value
属性并将其设置为true
。
鉴于这本剧本
- hosts: local
gather_facts: no
tasks:
- xml:
path: /etc/gconf/gconf.xml.defaults/%gconf-tree.xml
xpath: "/entry[@name='disable_user_list']/local_schema[@short_desc='Do not show known users in the login window']/default[@type='bool']"
attribute: value
value: "true"
这里是一个执行的例子
cat /etc/gconf/gconf.xml.defaults/%gconf-tree.xml && ansible-playbook play.yml && cat /etc/gconf/gconf.xml.defaults/\%gconf-tree.xml
<?xml version='1.0' encoding='UTF-8'?>
<entry name="disable_user_list" mtime="1558109430" type="schema" stype="bool" owner="gdm-simple-greeter" gettext_domain="gdm">
<local_schema locale="C" short_desc="Do not show known users in the login window">
<default type="bool" value="false"/>
<longdesc>Set to true to disable showing known users in the login window.</longdesc>
</local_schema>
</entry>
PLAY [local] ***********************************************************************************************************************************************************************************************
TASK [xml] *************************************************************************************************************************************************************************************************
changed: [local]
PLAY RECAP *************************************************************************************************************************************************************************************************
local : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
<?xml version='1.0' encoding='UTF-8'?>
<entry name="disable_user_list" mtime="1558109430" type="schema" stype="bool" owner="gdm-simple-greeter" gettext_domain="gdm">
<local_schema locale="C" short_desc="Do not show known users in the login window">
<default type="bool" value="true"/>
<longdesc>Set to true to disable showing known users in the login window.</longdesc>
</local_schema>
</entry>
【讨论】:
以上是关于Ansible - 在 CentOS 6 中删除登录窗口的主要内容,如果未能解决你的问题,请参考以下文章