我正在尝试从Ansible的stdout_lines中提取一个特定的数字并将其用作变量。我在剧本中运行show命令,我想从输出中得到的只是我的加密映射中的最高序列号。例如,这是我的剧本:
-
asa_command:
commands:
- show run crypto map
provider: "{{ base_provider }}"
register: result
-
debug: var=result.stdout_lines
这会产生很好的输出,但是我不确定如何从以下内容中提取序列号(为了简化说明,我省略了大多数密码映射)。
"crypto map map1 60 set ikev1 transform-set test",
"crypto map map1 60 set security-association lifetime seconds 3600",
"crypto map map1 61 set peer 1.1.1.1 ",
"crypto map map1 61 set ikev1 transform-set test1",
"crypto map map1 61 set security-association lifetime seconds 3600",
"crypto map map1 interface outside"
因此,基本上,我想提取最高序列号(在本例中为“ 61”),以便可以将其作为变量输入到同一本书中。任何想法将不胜感激:-)
我尝试查看一些jinja2过滤器,但无法确定最适合我的用法的过滤器。
http://ansible-docs.readthedocs.io/zh/stable-2.0/rst/playbooks_filters.html
我也尝试过此页面上的建议,但我也没有做到。
答案 0 :(得分:0)
请注意,我在记事本中忙碌着,无法完全使用这些工具,因此请检查我的语法,尤其是那些双反斜杠转义符。就是说,让我们一连串的过滤器可以满足您的需求。怎么样:
- debug: msg="{{ result.stdout |
regex_findall ('^"crypto map map1 \\d\\d set ') |
regex_replace ('^"crypto map map1 (\\d\\d) set .*',
'\\1') |
max
}}"
答案 1 :(得分:0)
由于我遇到了非常类似的问题,所以我有以下想法:您可以在运行全文搜索服务的MS SQL Server企业版中放入易执行的结果,只需简单地选择所需的内容即可。 话虽如此,但我必须指出,这是我在开源社区中遇到过的最奇怪的情况:Linux工具无法简单有效地与grep之类的基本内容集成。
这可能意味着正在开发的人不知道什么是系统管理...
我真的很想尝试一下,但是日复一日,我印象深刻,这就像Powershell噩梦广告根本没有用,仅仅是因为Yo无法有效地控制输出...