Как прокомментировать / не комментирует строка в конфигурационном файле с Augeas?

Я не сетевой свист, так скажите мне, если это элементарно:

Базирующийся от шаблонов я видел от вывода netstat - я изменился
serverSocket = new TcpListener(IPAddress.Parse("127.0.0.1"), port);
Кому:
serverSocket = new TcpListener(IPAddress.Parse("0.0.0.0"), port);

Также используемый nmap, который был очень полезен, но не сообщил о порте, открытом, в то время как я использовал IP localhost в качестве сервера. После того как я внес изменение хоста, я заметил, что nmap также сообщил о порте, как открыто, довольно странный, по-моему.

7
задан 14 December 2011 в 13:22
2 ответа

{, Un} комментирование - сложный вопрос для Авгия из-за его природы. Короткий ответ заключается в том, что Авгий не может {, un} комментировать узлы в настоящее время.

Причина (и предлагаемые решения) подробно описана в этом билете .

Что касается причины неудачной вставки, это потому что вы создали узел facle вместо узла entry . facle - неизвестное имя узла в syslog.aug .

Вот что вы можете сделать вместо этого:

augtool> print /files/etc/syslog.conf/
/files/etc/syslog.conf
/files/etc/syslog.conf/#comment[1] = "titi"
/files/etc/syslog.conf/#comment[2] = "kern.*                         /dev/console"
/files/etc/syslog.conf/#comment[3] = "toto"
augtool> defvar kerncomment /files/etc/syslog.conf/#comment[. =~ regexp('kern.* +/dev/console')][count(/files/etc/syslog.conf/entry[selector/facility = "kern" and selector/level = "*" and action/file = "/var/log/kern.log"]) = 0]
augtool> ins entry after $kerncomment
augtool> defvar kernentry /files/etc/syslog.conf/entry[preceding-sibling::*[1][$kerncomment]]
augtool> set $kernentry/selector/facility kern
augtool> set $kernentry/selector/level *
augtool> set $kernentry/action/file /var/log/kern.log
augtool> rm $kerncomment
augtool> print /files/etc/syslog.conf/
/files/etc/syslog.conf
/files/etc/syslog.conf/#comment[1] = "titi"
/files/etc/syslog.conf/entry
/files/etc/syslog.conf/entry/selector
/files/etc/syslog.conf/entry/selector/facility = "kern"
/files/etc/syslog.conf/entry/selector/level = "*"
/files/etc/syslog.conf/entry/action
/files/etc/syslog.conf/entry/action/file = "/var/log/kern.log"
/files/etc/syslog.conf/#comment[3] = "toto"
augtool> save
Saved 1 file(s)
augtool> 

Первая строка гарантирует, что это изменение идемпотентно. Это можно упростить, если вы используете Puppet: вы можете избежать сложности первой строки, используя , только если .

4
ответ дан 2 December 2019 в 23:41

В Augeas AFAIK нет простого средства «раскомментировать эту строку». Вы можете использовать ins , чтобы найти существующий комментарий, вставить новую запись с помощью команд set , как у вас, а затем удалить комментарий.

По запросу, вот пример того, как Я установил «последовательный порт» и «терминал» для последовательной консоли для GRUB:

augeas { "grub-serial-ttyS${portnum}":
   context => "/files/etc/grub.conf",
   changes => [
       'rm serial',
       'ins serial after timeout',
       "set serial/unit '${portnum}'",
       "set serial/speed '${portspeed}'",
       'rm terminal',
       'ins terminal after serial',
       "set terminal/timeout '5'",
       "clear terminal/console",
       "clear terminal/serial",
   ],
}

Единственное предостережение - должен существовать тайм-аут .

На самом деле, я не уверен, что это действительно так. хороший пример, но вот он все равно.

2
ответ дан 2 December 2019 в 23:41

Теги

Похожие вопросы