()
| 1039 | |
| 1040 | |
| 1041 | def get_computer_model(): |
| 1042 | try: |
| 1043 | if MACOS: |
| 1044 | try: |
| 1045 | with open(os.path.join(os.getenv("HOME"), '.emrun.hwmodel.cached'), encoding='utf-8') as f: |
| 1046 | model = f.read() |
| 1047 | return model |
| 1048 | except OSError: |
| 1049 | pass |
| 1050 | |
| 1051 | try: |
| 1052 | # http://apple.stackexchange.com/questions/98080/can-a-macs-model-year-be-determined-via-terminal-command |
| 1053 | serial = check_output(['system_profiler', 'SPHardwareDataType']) |
| 1054 | serial = re.search("Serial Number (.*): (.*)", serial) |
| 1055 | serial = serial.group(2).strip()[-4:] |
| 1056 | cmd = ['curl', '-s', 'http://support-sp.apple.com/sp/product?cc=' + serial] |
| 1057 | logv(str(cmd)) |
| 1058 | model = check_output(cmd) |
| 1059 | model = re.search('<configCode>(.*)</configCode>', model) |
| 1060 | model = model.group(1).strip() |
| 1061 | with open(os.path.join(os.getenv("HOME"), '.emrun.hwmodel.cached'), 'w', encoding='utf-8') as fh: |
| 1062 | fh.write(model) # Cache the hardware model to disk |
| 1063 | return model |
| 1064 | except Exception: |
| 1065 | hwmodel = check_output(['sysctl', 'hw.model']) |
| 1066 | hwmodel = re.search('hw.model: (.*)', hwmodel).group(1).strip() |
| 1067 | return hwmodel |
| 1068 | elif WINDOWS: |
| 1069 | manufacturer = check_output(['wmic', 'baseboard', 'get', 'manufacturer']).split('\n')[1].strip() |
| 1070 | version = check_output(['wmic', 'baseboard', 'get', 'version']).split('\n')[1].strip() |
| 1071 | product = check_output(['wmic', 'baseboard', 'get', 'product']).split('\n')[1].strip() |
| 1072 | if 'Apple' in manufacturer: |
| 1073 | return manufacturer + ' ' + version + ', ' + product |
| 1074 | else: |
| 1075 | return manufacturer + ' ' + product + ', ' + version |
| 1076 | elif LINUX: |
| 1077 | board_vendor = check_output(['cat', '/sys/devices/virtual/dmi/id/board_vendor']).strip() |
| 1078 | board_name = check_output(['cat', '/sys/devices/virtual/dmi/id/board_name']).strip() |
| 1079 | board_version = check_output(['cat', '/sys/devices/virtual/dmi/id/board_version']).strip() |
| 1080 | |
| 1081 | bios_vendor = check_output(['cat', '/sys/devices/virtual/dmi/id/bios_vendor']).strip() |
| 1082 | bios_version = check_output(['cat', '/sys/devices/virtual/dmi/id/bios_version']).strip() |
| 1083 | bios_date = check_output(['cat', '/sys/devices/virtual/dmi/id/bios_date']).strip() |
| 1084 | return board_vendor + ' ' + board_name + ' ' + board_version + ', ' + bios_vendor + ' ' + bios_version + ' (' + bios_date + ')' |
| 1085 | except Exception as e: |
| 1086 | logv(str(e)) |
| 1087 | return 'Generic' |
| 1088 | |
| 1089 | |
| 1090 | def get_os_version(): |
no test coverage detected