Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parsing windows command results with Python and regex

I am using the following code to ping a website to check for connectivity. How can I parse the results back to get "Lost = " to see how many were lost?

def pingTest():
    host = "www.wired.com"
    ping = subprocess.Popen(
        ["ping","-n","4",host],
        stdout = subprocess.PIPE,
        stderr = subprocess.PIPE
    )

    out,error = ping.communicate()
    print out

This is the return I get from out

Pinging wired.com [173.223.232.42] with 32 bytes of data:
Reply from 173.223.232.42: bytes=32 time=54ms TTL=51
Reply from 173.223.232.42: bytes=32 time=54ms TTL=51
Reply from 173.223.232.42: bytes=32 time=54ms TTL=51
Reply from 173.223.232.42: bytes=32 time=54ms TTL=51

Ping statistics for 173.223.232.42:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 54ms, Maximum = 54ms, Average = 54ms
like image 300
lodkkx Avatar asked Dec 28 '22 05:12

lodkkx


1 Answers

Step 1: Construct a regular expression that will match Lost = 0 (0% loss), using \d tags to substitute for the numeric values, which will vary. Use capturing groups to preserve these values.

Step 2: Use re.search to scan the out string.

Step 3: Extract the values from the re's capturing groups.

like image 187
PaulMcG Avatar answered Dec 31 '22 13:12

PaulMcG