背景:虽然我认为 Fail2Ban 是保护 Apache 等子系统的好方法,但将所有信息汇总在一起需要大量工作。所以我正在编写一个 BASH 脚本来为我做这件事。
我需要将fail2ban-client的' get '选项放在一个数组中..
到目前为止,我使用以下方法隔离了这些:f2b_opts_cmd="$(sudo fail2ban-client --help | grep -i 'get <jail>' | grep -vw 'act')"
在命令行上,它看起来像:
get <JAIL> logpath gets the list of the monitored
get <JAIL> logencoding gets the encoding of the log files
get <JAIL> journalmatch gets the journal filter match for
get <JAIL> ignoreself gets the current value of the
get <JAIL> ignoreip gets the list of ignored IP
get <JAIL> ignorecommand gets ignorecommand of <JAIL>
get <JAIL> failregex gets the list of regular
get <JAIL> ignoreregex gets the list of regular
get <JAIL> findtime gets the time for which the filter
get <JAIL> bantime gets the time a host is banned for
get <JAIL> datepattern gets the patern used to match
get <JAIL> usedns gets the usedns setting for <JAIL>
get <JAIL> maxretry gets the number of failures
get <JAIL> maxlines gets the number of lines to buffer
get <JAIL> actions gets a list of actions for <JAIL>
但是,变量看起来像:
get
<JAIL>
logpath 获取被监控的列表 get<JAIL>
logencoding 获取日志文件的编码 get<JAIL>
journalmatch 获取日志过滤器匹配 get<JAIL>
ignoreself 获取当前值 get<JAIL>
ignoreip 获取忽略的 IP 列表 get<JAIL>
ignorecommand 获取 ignorecommand of<JAIL>
get<JAIL>
failregex 获取常规获取<JAIL>
列表 ignoreregex 获取常规获取列表<JAIL>
findtime 获取过滤器获取<JAIL>
bantime 获取主机被禁止的时间获取 datepattern 获取模式.. etc.etc。
但我需要有类似的东西:
f2b_opts=(logpath logencoding journalmatch ignoreself ignoreip ignorecommand failregex ignoreregex findtime bantime datepattern usedns maxretry maxlines actions)
部分后面的单词怎么读<JAIL>
?
经过几天搜索这个论坛和其他网站,仍然没有找到解决这个问题的方法。这里的复杂因素是“小于”和“大于”符号以及原始字符串中有多个“JAIL”单词的事实(参见示例)。
您可以使用以下命令来翻译给定的文本(我不知道它是输入文本文件还是 的结果
f2b_opts_cmd="$(sudo fail2ban-client --help | grep -i 'get <jail>' | grep -vw 'act')"
,但这并不重要)。在这两种情况下,您都可以使用此命令sed
和tr
命令组合:获得以下输出:
要在管道中用作命令的一部分,请删除“input.txt”部分。
如果我猜对了,这可能就是你想要的:
但这只是一个猜测。