Я видел несколько упоминаний о них в документах и misc сценариях, но ничто конкретное на точно, как они используются. Кто-либо мог дать мне некоторые примеры?
Это - просто случай
myvar=7
.
.
.
[ssh]
bantime=%(myvar)s
Раз так какой смысл?
Во-вторых, как я использую "Ярлыки действия" в jail.conf? например. action_ = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
, какие-либо документы об этом?
Если вы посмотрите на правила, включенные в fail2ban
, вы заметите, что они используют эти переменные, чтобы сделать вещи более аккуратными и многого другого. параметризованный. Например, во включенном jail.conf
они использовали их для создания общих правил действий, которые затем можно было использовать при определении различных тюрем.
Вот некоторые основные переменные вверху .
# Destination email address used solely for the interpolations in
# jail.{conf,local,d/*} configuration files.
destemail = root@localhost
# Sender email address used solely for some actions
sender = root@localhost
# Default protocol
protocol = tcp
# Ports to be banned
# Usually should be overridden in a particular jail
port = 0:65535
Эти переменные затем используются в других переменных для создания некоторых основных действий.
# Default banning action (e.g. iptables, iptables-new,
# iptables-multiport, shorewall, etc) It is used to define
# action_* variables. Can be overridden globally or per
# section within jail.local file
banaction = iptables-multiport
# The simplest action to take: ban only
action_ = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
# ban & send an e-mail with whois report to the destemail.
action_mw = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
%(mta)s-whois[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s", chain="%(chain)s"]
Обратите внимание, что здесь создается действие общего назначения, называемое action_
, которое создается с использованием других переменных, таких как , % (banaction) s
, % (port) s
, `% (protocol) s и т.д.
Из man jail.conf
man страница:
Использование механизмов "интерполяции строк" Python, другие определения разрешены и могут быть позже использоваться в других определениях как% (name) s. Например.
baduseragents = IE | wget failregex = useragent =% (baduseragents) s
Итак, % (...) s
являются частью языка Python. Если вы будете искать их, то в конечном итоге найдете эту страницу в спецификации языка Python, в частности в этом разделе под названием: 5.6.2. Операции форматирования строк . На этой странице есть пример:
>>> print '%(language)s has %(number)03d quote types.' % \
... {"language": "Python", "number": 2}
Python has 002 quote types.
% (... string ...) s
в Python называется оператором форматирования или интерполяции строки. s
в конце % (... string ...)
- это флаг, указывающий, что любые объекты Python, которые могут быть переданы ему, преобразуются в строки. Из ссылки, на которую я ссылался, есть таблица со всеми разрешенными флагами:
%
указывает, где вы хотите, чтобы спецификатор начинался, а (... строка ...)
- это переменная Python, которую мы хотим здесь расширить. .