1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
#
# Copyright 2020 Ettus Research, a National Instruments Company
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
"""
Utilities for checking the filesystem status
"""
import hashlib
import pathlib
import subprocess
import time
def get_uhd_version(filesystem_root='/'):
file = pathlib.Path(filesystem_root, 'usr/bin/uhd_config_info')
versionstring = subprocess.check_output([file, '--version']).decode('utf-8').splitlines()[0]
return versionstring
def get_mender_artifact(filesystem_root='/', parse_manually=False):
def parse_artifact(output):
for line in output.splitlines():
if line.startswith('artifact_name='):
return line[14:]
return None
if filesystem_root != '/':
parse_manually = True
if parse_manually:
# parse mender artifact manually
file = pathlib.Path(filesystem_root, 'etc/mender/artifact_info')
if not file.exists():
return None
return parse_artifact(file.read_text())
try:
output = subprocess.check_output(['/usr/bin/mender', 'show-artifact']).decode('utf-8')
return output.splitlines()[0]
except:
return None
def get_fs_version(filesystem_root='/'):
file = pathlib.Path(filesystem_root, 'etc/version')
if not file.exists():
return None
return file.read_text().splitlines()[0]
def get_opkg_status_date(date_only=False, filesystem_root='/'):
if date_only:
tformat = "%Y-%m-%d"
else:
tformat = "%Y-%m-%d %H:%M:%S"
file = pathlib.Path(filesystem_root, 'var/lib/opkg/status')
if not file.exists():
return None
return time.strftime(tformat, time.gmtime(file.stat().st_mtime))
def get_opkg_status_md5sum(filesystem_root='/'):
file = pathlib.Path(filesystem_root, 'var/lib/opkg/status')
if not file.exists():
return None
return hashlib.md5(file.read_bytes()).hexdigest()
|