
Мне интересно, есть ли какие-нибудь инструменты для использования в скриптах bash, которые могут легко позволить вамманипулировать(добавить, удалить, обновить) директивы внутри conf-файлов?
например, fail2ban.conf сгруппировал директивы, каждая из которых находится в своем собственном разделе.
[proftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
[postfix]
enabled = true
port = smtp,465,submission
в то время как pagespeed.conf имеет смешанные директивы, некоторые из которых находятся в своих собственных разделах, а некоторые разбросаны по всему файлу.
<Location /pagespeed_admin>
Order allow,deny
Allow from localhost
Allow from 127.0.0.1
SetHandler pagespeed_admin
</Location>
<Location /pagespeed_global_admin>
Order allow,deny
Allow from localhost
Allow from 127.0.0.1
SetHandler pagespeed_global_admin
</Location>
ModPagespeedMessageBufferSize 100000
ModPagespeedStatisticsLogging on
ModPagespeedEnableCachePurge on
ModPagespeedPurgeMethod PURGE
ModPagespeedFileCacheSizeKb 2048000
ModPagespeedFileCacheCleanIntervalMs 3600000
ModPagespeedFileCacheInodeLimit 500000
Вы поняли.
Существуют ли какие-либо инструменты, которые позволяют, например, манипулировать директивой «enabled» в разделе «proftpd» файла fail2ban.conf?
или изменить директиву «Разрешить из» в разделе «Расположение /pagespeed_admin» файла pagespeed.conf?
или манипулировать директивой «ModPagespeedMessageBufferSize» в разделе «no particular» файла pagespeed.conf?
Спасибо
решение1
Нет, по той простой причине, что существует слишком много форматов, которые может использовать файл конфигурации. Лучшее, что вы можете сделать, я думаю, это свернуть свой собственный с помощью инструментов обработки текста.
Для некоторых форматов (например, JSON) могут быть библиотеки, но авторы инструментов вольны использовать любой формат, который им нравится, поэтому универсальный инструмент невозможен. Просто для иллюстрации приведу несколько строк из нескольких файлов conf:
emacs
;; Are we running XEmacs or Emacs? (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version)) ;; disable menu bar when running in terminal (when (not (display-graphic-p)) (menu-bar-mode -1)) ;;My libraries, ebib, wordcount etc (add-to-list 'load-path "~/.emacs-lisp/")
ви
highlight Normal guibg=grey90 highlight Cursor guibg=Green guifg=NONE highlight lCursor guibg=Cyan guifg=NONE highlight NonText guibg=grey80 highlight Constant gui=NONE guibg=grey95 highlight Special gui=NONE guibg=grey95
оттенок
#--------------------------------------------- # BACKGROUND AND BORDER #--------------------------------------------- # general panel settings rounded = 7 border_width = 2 #background_color = #B4B2B2 10 background_color = #000000 30 border_color = #8F0004 0
vlc
# Trigger button (string) #gestures-button=left [motion] # motion control interface [oldrc] # Remote control interface # Show stream position (boolean) rc-show-pos=0
sshd
AuthorizedKeysFile .ssh/authorized_keys ChallengeResponseAuthentication no UsePAM yes
и т.д. и т.п.
решение2
Не совсем, но можно построить что-то для определенной конфигурации макета. Что-то вроде
sed -E "/\[proftpd]/,/\[/{s/(enabled\s*=\s*).*/\1false/}" input.file
может быть разработана как функция для изменения fail2ban.conf, например.
Я мог бы рассказать подробнее, если это будет интересно.