From fb35a11c730899a9de13239f50477eaf979baf03 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 9 Nov 2015 17:47:12 -0800 Subject: [PATCH] get_os_info : wrangle OS and major version number in a semi-portable way --- letsencrypt/le_util.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/letsencrypt/le_util.py b/letsencrypt/le_util.py index 5626902ef..625e6fb51 100644 --- a/letsencrypt/le_util.py +++ b/letsencrypt/le_util.py @@ -202,6 +202,35 @@ def safely_remove(path): raise +def get_os_info(): + """ + Get Operating System type/distribution and version + """ + + info = platform.system_alias( + platform.system(), + platform.release(), + platform.version() + ) + + os_type, os_ver, _ = info + os_type = os_type.lower() + + if os_type.startswith('linux'): + info = platform.linux_distribution() + os_type, os_ver, _ = info + + elif os_type.startswith('darwin'): + os_ver = subprocess.Popen( + ["sw_vers", "-productVersion"], + stdout=subprocess.PIPE + ).communicate()[0] + + else: + os_ver = '' + + return os_type, os_ver + # Just make sure we don't get pwned... Make sure that it also doesn't # start with a period or have two consecutive periods <- this needs to # be done in addition to the regex