Skip to content

Instantly share code, notes, and snippets.

@mstfydmr
Last active July 21, 2018 08:19
Show Gist options
  • Save mstfydmr/063498c40d969363429e060f12a7b1ee to your computer and use it in GitHub Desktop.
Save mstfydmr/063498c40d969363429e060f12a7b1ee to your computer and use it in GitHub Desktop.
Python3 - Linux uptime command output parser
# Parse Uptime
# ------------------------------
def parse_uptime(output = False):
try:
import re
parsed = []
# Find Uptime Data
r = re.compile(" up (.*?), +[0-9]+ user")
if not r: return False
m = r.search(output)
uptime = m.group(1)
del output
del r
del m
# Find Day
# --------------------------
x = re.compile("([0-9]+) +day")
md = x.search(uptime)
if md:
allX = md.group(0)
md = md.group(1)
if int(md) <= 1:
parsed.append("{} day".format(str(md)))
else:
parsed.append("{} days".format(str(md)))
uptime = uptime.replace(allX, "").strip()
# Find Hour
# ------------------------
x = re.compile("([0-9]+) +hour")
md = x.search(uptime)
if md:
allX = md.group(0)
md = md.group(1)
if int(md) <= 1:
parsed.append("{} hour".format(str(md)))
else:
parsed.append("{} hours".format(str(md)))
uptime = uptime.replace(allX, "").strip()
# Find Minute
# ------------------------
x = re.compile("([0-9]+) +min")
md = x.search(uptime)
if md:
allX = md.group(0)
md = md.group(1)
if int(md) <= 1:
parsed.append("{} minute".format(str(md)))
else:
parsed.append("{} minutes".format(str(md)))
uptime = uptime.replace(allX, "").strip()
# Find Hour & Minute
# Parse : 20:11
# ------------------------
if ":" in uptime:
x = re.compile("([0-9]+:[0-9]+)")
md = x.search(uptime)
if md:
md = md.group(1).split(":")
hour = int(md[0])
minute = int(md[1])
if hour <= 1:
parsed.append("{} hour".format(str(hour)))
else:
parsed.append("{} hours".format(str(hour)))
if minute <= 1:
parsed.append("{} minute".format(str(minute)))
else:
parsed.append("{} minutes".format(str(minute)))
try:
del uptime
del allX
del md
del x
except:
pass
parsed = ", ".join(parsed).strip("'\" ")
return parsed
except:
return False
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment