title: Changing output of speedtest.py and speedtest-cli to include IP address in output .csv file
body: <p>I added a line in the python code “speedtest.py” that I found at pimylifeup.com.  I hoped it would allow me to track the internet provider and IP address along with all the other speed information his code provides. But when I execute it, the code only grabs the next word after the find all call. I would also like it to return the IP address that appears after the provider. I have attached the code below. Can you help me modify it to return what I am looking for.</p>
  
  <p>Here is an example what is returned by speedtest-cli</p>
  
  <pre><code>$ speedtest-cli
  Retrieving speedtest.net configuration...
  Testing from Biglobe (111.111.111.111)...
  Retrieving speedtest.net server list...
  Selecting best server based on ping...
  Hosted by GLBB Japan (Naha) [51.24 km]: 118.566 ms
  Testing download speed................................................................................
  Download: 4.00 Mbit/s
  Testing upload speed......................................................................................................
  Upload: 13.19 Mbit/s
  $
  </code></pre>
  
  <p>And this is an example of what it is being returned by speediest.py to my .csv file</p>
  
  <pre><code>Date,Time,Ping,Download (Mbit/s),Upload(Mbit/s),myip
  
  05/30/20,12:47,76.391,12.28,19.43,Biglobe
  </code></pre>
  
  <p>This is what I want it to return.</p>
  
  <pre><code>Date,Time,Ping,Download (Mbit/s),Upload (Mbit/s),myip
  
  05/30/20,12:31,75.158,14.29,19.54,Biglobe 111.111.111.111
  </code></pre>
  
  <p>Or may be,</p>
  
  <pre><code>05/30/20,12:31,75.158,14.29,19.54,Biglobe,111.111.111.111
  </code></pre>
  
  <p>Here is the code that I am using.  And thank you for any help you can provide.  </p>
  
  <pre><code>import os
  import re
  import subprocess
  import time
  
  response = subprocess.Popen(‘/usr/local/bin/speedtest-cli’, shell=True, stdout=subprocess.PIPE).stdout.read().decode(‘utf-8’)
  
  ping = re.findall(‘km]:\s(.*?)\s’, response, re.MULTILINE)
  download = re.findall(‘Download:\s(.*?)\s’, response, re.MULTILINE)
  upload = re.findall(‘Upload:\s(.*?)\s’, response, re.MULTILINE)
  myip = re.findall(‘from\s(.*?)\s’, response, re.MULTILINE)
  
  ping = ping[0].replace(‘,’, ‘.’)
  download = download[0].replace(‘,’, ‘.’)
  upload = upload[0].replace(‘,’, ‘.’)
  myip = myip[0]
  
  try:
  f = open(‘/home/pi/speedtest/speedtestz.csv’, ‘a+’)
  if os.stat(‘/home/pi/speedtest/speedtestz.csv’).st_size == 0:
  f.write(‘Date,Time,Ping,Download (Mbit/s),Upload (Mbit/s),myip\r\n’)
  except:
  pass
  
  f.write(‘{},{},{},{},{},{}\r\n’.format(time.strftime(‘%m/%d/%y’), time.strftime(‘%H:%M’), ping, download, upload, myip))
  </code></pre>