1#!/bin/sh 2# 3# Functions shared by several scripts 4# 5# Copyright (c) 2013-2016 MegaGlest Team under GNU GPL v3.0+ 6 7function detect_system { 8# Determine distro title, release, codename 9# 10# Input: 11# -/- 12# 13# Output: 14# No direct output, but the following variables are set: 15# lsb: whether (1) or not (0) system information was retrieved from 'lsb_release' 16# distribution: detected Linux distribution (string) 17# release: detected distribution release / version (string) 18# codename: codename of the detected Linux distribution (string) 19# architecture: detected machine architecture (string) 20 21 if [ "$(which lsb_release)" = "" ]; then 22 lsb=0 23 release='unknown release' 24 if [ -e "/etc/os-release" ]; then 25 distribution="$(cat "/etc/os-release" | grep '^ID=' | awk -F '=' '{print $2}' \ 26 | awk '{print toupper(substr($0,1,1))substr($0,2)}')" 27 codename="$(cat "/etc/os-release" | grep '^PRETTY_NAME=' | awk -F '"' '{print $2}')" 28 # example output ^ on debian testing: "Debian GNU/Linux stretch/sid" 29 elif [ -e /etc/debian_version ]; then 30 distribution='Debian' 31 codename="$(cat /etc/debian_version)" 32 elif [ -e /etc/SuSE-release ]; then 33 distribution='SuSE' 34 codename="$(cat /etc/SuSE-release)" 35 elif [ -e /etc/redhat-release ]; then 36 if [ -e /etc/fedora-release ]; then 37 distribution='Fedora' 38 codename="$(cat /etc/fedora-release)" 39 else 40 distribution='Redhat' 41 codename="$(cat /etc/redhat-release)" 42 fi 43 elif [ -e /etc/fedora-release ]; then 44 distribution='Fedora' 45 codename="$(cat /etc/fedora-release)" 46 elif [ -e /etc/mandrake-release ]; then 47 distribution='Mandrake' 48 codename="$(cat /etc/mandrake-release)" 49 else 50 distribution='unknown distribution' 51 codename='unknown codename' 52 fi 53 else 54 lsb=1 55 distribution="$(lsb_release -i | awk -F':' '{ gsub(/^[ \t]*/,"",$2); print $2 }')" 56 release="$(lsb_release -r | awk -F':' '{ gsub(/^[ \t]*/,"",$2); print $2 }')" 57 codename="$(lsb_release -c | awk -F':' '{ gsub(/^[ \t]*/,"",$2); print $2 }')" 58 59 # Some distribution examples: 60 # 61 # OpenSuSE 11.4 62 # LSB Version: n/a 63 # Distributor ID: SUSE LINUX 64 # Description: openSUSE 11.4 (x86_64) 65 # Release: 11.4 66 # Codename: Celadon 67 # 68 # OpenSuSE 12.1 69 # LSB support: 1 70 # Distribution: SUSE LINUX 71 # Release: 12.1 72 # Codename: Asparagus 73 # 74 # Arch 75 # LSB Version: n/a 76 # Distributor ID: archlinux 77 # Description: Arch Linux 78 # Release: rolling 79 # Codename: n/a 80 # 81 # Ubuntu 12.04 82 # Distributor ID: Ubuntu 83 # Description: Ubuntu 12.04 LTS 84 # Release: 12.04 85 # Codename: precise 86 fi 87 architecture="$(uname -m)" 88} 89