- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 lineinfile
在 syslog 文件中插入一行。这是我的系统日志:
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
missingok
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
我要加
compress
和
delaycompress
之后
missingok
.这是我的代码:
- name: "Adding compress line in /etc/logrotate.d/syslog"
lineinfile:
path: /etc/logrotate.d/syslog
insertafter: "^missingok"
line: " compress"
firstmatch: yes
state: present
- name: "Adding delaycompress line in /etc/logrotate.d/syslog"
lineinfile:
path: /etc/logrotate.d/syslog
insertbefore: "^sharedscripts"
line: " delaycompress"
firstmatch: yes
state: present
但是它在文件的末尾(最后几行)添加了两者。
compress
前加了 4 个空格和
delaycompress
.
最佳答案
这是因为插入符号 ^
, 在正则表达式中,匹配字符串的开头而不消耗任何字符。
并且因为您在 missingok
之前确实有空格和 sharedscripts
,您的 insertafter
和 insertbefore
正则表达式 are matching nothing .
要解决此问题,您可以在 \s
的帮助下仅在行首允许空格和空格。匹配任何空格、制表符或换行符和星号 *
匹配零个或多个连续字符。
所以正确的正则表达式是
^\s*missingok
Test it here ^\s*sharedscripts
- name: "Adding compress line in /etc/logrotate.d/syslog"
lineinfile:
path: /etc/logrotate.d/syslog
insertafter: "^\\s*missingok"
line: " compress"
firstmatch: yes
state: present
- name: "Adding delaycompress line in /etc/logrotate.d/syslog"
lineinfile:
path: /etc/logrotate.d/syslog
insertbefore: "^\\s*sharedscripts"
line: " delaycompress"
firstmatch: yes
state: present
请注意,因为 Ansible 是一个 Python 应用程序,
backslashes \
have a special meaning and have to be escaped .
关于ansible - 使用 lineinfile 插入行但未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63347659/
我有很多行需要添加,比如 今天 是 一个 好 天 如果只有一个目的地,将是 - name: add line lineinfile: dest: "/tmp/aaa.txt" li
同样,有一个模块lineinfile可以在文件中添加一行,有没有办法添加多行? 我不想使用模板,因为您必须提供整个文件。我只想向现有文件添加一些内容,而不必知道该文件已包含什么内容,因此模板不是一个选
我在/etc/foo.txt 中有一个简单的文件。该文件包含以下内容: #bar 我有以下 ansible playbook 任务来取消注释上面的行: - name: test lineinfile
我是 Ansible 新手,正在尝试修改 /etc/default/grub 中的一行以启用审核。 我需要在一行的引号内添加 audit=1 ,如下所示: GRUB_CMDLINE_LINUX="cr
我正在使用 lineinfile在 syslog 文件中插入一行。这是我的系统日志: /var/log/cron /var/log/maillog /var/log/messages /var/log
我正在尝试读取文件的内容,将它们存储在变量中,然后如果它们不存在,则将它们插入到另一个文件中。 所以,我试图解决这个问题的方法如下: # Create a variable that represen
当行中冒号 (:) 后面有空格时,Ansible 的 lineinfile 会出现语法错误,例如 line='item: value'。如果没有像 line='item:value' 这样的空格,它就
我正在尝试添加包含单引号和双引号的行,但我在一个小时内未能这样做...... vars: line1: "a=\\\"a'b'c\\\"" line2: 'a="a\''b\''c"' tas
嗨我有一个任务如下 - name: Replace log directory in configuration lineinfile: path: $HOME/am
简单的问题。 我正在尝试匹配“UseDns”、“usedns”和其他变体。 - name: Disable DNS checking on login (huge speedup) sudo: t
我有一个 ansible play 可以正常工作,如下所示,这里我有两个 From 条目正在用 TO 条目更改。 但我只是想知道在我的例子中,是否有办法可以将名为 ntp.conf 的文件中的一行替换
我看过一些有类似问题的帖子,但似乎对我没有任何帮助。有些人提到需要在我的正则表达式中使用组,所以我添加了它们但仍然有问题。其他人说只要在我的 lineinfile 中添加“backrefs: yes”
如何确保文件中存在特定行并且未使用 ansible 的 `lineinfile' 进行注释 我想要取消注释的行(在 .htaccess 中): #php_flag display_errors on
我正在尝试使用 Ansible 编辑 apache.conf。这是我的conf的一部分: # Sets the default security model of the Apache2 HTTPD
我有一本剧本 --- - hosts: 127.0.0.1 connection: local vars: WORK_DIR: /somefolder tasks: - deb
我很难相信没有任何东西可以涵盖这个用例,但事实证明我的搜索毫无结果。 我在 /etc/fstab 中有一行用于安装不再可用的驱动器: //archive/Pipeline /pipeline/Arch
我正在尝试确保从文件中删除除少数特定行以外的所有行。我可以完成以下任务。 - name: ensure only the correct lines are present lineinfile:
我们的 SSL 证书将在几天内用完。所以我认为 Ansible 可以将新证书放在服务器上并更改 apache2 站点。 服务器站点正在此服务器上运行。 我想替换以下几行: SSLCertificate
如果它不在基于主机名的文件中,我们需要添加行。 意思是: 如果主机名是 abc 则行 "ABC" 转到 /etc/app.conf 否则 "XYZ" 行将转到 /etc/app.conf 文件。 对此
我开始使用 Ansible 来编写一个剧本,为我们的应用程序部署一个登台环境。 我试图了解对文件应用更改的最佳实践是否是在控制机器上本地更改它们,然后将它们传播到远程服务器,或者是否应该在剧本中操作文
我是一名优秀的程序员,十分优秀!