Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.4k views
in Technique[技术] by (71.8m points)

parsing - Ansible textfsm parse

I am trying to parse using textfsm but getting below error , any suggestions ? any easy way to just parse and print like below

Destination: 8.8.8.8 TX:15 packets RX:15 packets PKTLOSS:0%

right now i am generating output1 and from there want to parse using textfsm which is output2. but is there way to parse ping using texfsm directly from output0 ?

    - name: output0
      debug:
        msg: "{{ping.results|map(attribute='output')|list}}"

    - name: output1
      debug:
        msg:
           - "{{r1.0.split('
')[-5]}} {{r1.0.split('
')[-4]}}"
           - "{{r2.0.split('
')[-5]}} {{r2.0.split('
')[-4]}}"
      vars:
        r1: "{{ ping.results|map(attribute='output')|first }}"
        r2: "{{ ping.results|map(attribute='output')|last }}"

      register: externalping

    - name: output2
      debug:
        msg: "{{externalping.msg | parse_cli_textfsm('templates/ping.textfsm')}}"

my textfsm template

Value Destination (S+)
Value TX (S+)
Value RX (S+)
Value PKTLOSS (S+)


Start
  ^---s+${Destination}s+pings+statisticss+---
s+${TX}s+packetss+transmitted,s+${RX}s+packetss+received,s+${PKTLOSS}s+packetss+loss+
 -> Record

error on parsing ping results using textfsm

```TASK [output0] 
*************************
ok: [route-server.ip.att.net] => {
    "msg": [
        [
            " ping 8.8.8.8 count 15 
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=118 time=4.108 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=4.100 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=118 time=4.115 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=118 time=7.177 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=118 time=4.132 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=118 time=4.129 ms
64 bytes from 8.8.8.8: icmp_seq=6 ttl=118 time=4.119 ms
64 bytes from 8.8.8.8: icmp_seq=7 ttl=118 time=4.155 ms
64 bytes from 8.8.8.8: icmp_seq=8 ttl=118 time=4.085 ms
64 bytes from 8.8.8.8: icmp_seq=9 ttl=118 time=4.075 ms
64 bytes from 8.8.8.8: icmp_seq=10 ttl=118 time=10.247 ms
64 bytes from 8.8.8.8: icmp_seq=11 ttl=118 time=4.274 ms
64 bytes from 8.8.8.8: icmp_seq=12 ttl=118 time=4.581 ms
64 bytes from 8.8.8.8: icmp_seq=13 ttl=118 time=4.125 ms
64 bytes from 8.8.8.8: icmp_seq=14 ttl=118 time=4.037 ms

--- 8.8.8.8 ping statistics ---
15 packets transmitted, 15 packets received, 0% packet loss
round-trip min/avg/max/stddev = 4.037/4.764/10.247/1.652 ms

[email protected]>"
        ],
        [
            " ping 1.1.1.1 count 15 
PING 1.1.1.1 (1.1.1.1): 56 data bytes
64 bytes from 1.1.1.1: icmp_seq=0 ttl=57 time=4.967 ms
64 bytes from 1.1.1.1: icmp_seq=1 ttl=57 time=4.934 ms
64 bytes from 1.1.1.1: icmp_seq=2 ttl=57 time=4.969 ms
64 bytes from 1.1.1.1: icmp_seq=3 ttl=57 time=4.921 ms
64 bytes from 1.1.1.1: icmp_seq=4 ttl=57 time=4.994 ms
64 bytes from 1.1.1.1: icmp_seq=5 ttl=57 time=4.895 ms
64 bytes from 1.1.1.1: icmp_seq=6 ttl=57 time=4.588 ms
64 bytes from 1.1.1.1: icmp_seq=7 ttl=57 time=4.847 ms
64 bytes from 1.1.1.1: icmp_seq=8 ttl=57 time=5.001 ms
64 bytes from 1.1.1.1: icmp_seq=9 ttl=57 time=4.958 ms
64 bytes from 1.1.1.1: icmp_seq=10 ttl=57 time=4.845 ms
64 bytes from 1.1.1.1: icmp_seq=11 ttl=57 time=4.971 ms
64 bytes from 1.1.1.1: icmp_seq=12 ttl=57 time=5.003 ms
64 bytes from 1.1.1.1: icmp_seq=13 ttl=57 time=4.642 ms
64 bytes from 1.1.1.1: icmp_seq=14 ttl=57 time=4.914 ms

--- 1.1.1.1 ping statistics ---
15 packets transmitted, 15 packets received, 0% packet loss
round-trip min/avg/max/stddev = 4.588/4.897/5.003/0.121 ms

[email protected]>"
        ]
    ]
}
TASK [output1] 
*****************************************************
ok: [route-server.ip.att.net] => {
    "msg": [
        "--- 8.8.8.8 ping statistics ---
 15 packets transmitted, 15 packets received, 0% packet loss
",
        "--- 1.1.1.1 ping statistics ---
 15 packets transmitted, 15 packets received, 0% packet loss
"
    ]
}
TASK [output2] ***************************************************
fatal: [route-server.ip.att.net]: FAILED! => {"msg": "parse_cli_textfsm input should be a string, but was given a input of "}```

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
等待大神解答

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...