zoukankan      html  css  js  c++  java
  • Detecting Underlying Linux Distro

    If you are the owner of the system, then you know which Linux is installed and running. This article will help you to understand how to determine which Linux distribution is installed. You can incorporate this into your application to detect Linux distro.

    System Command: uname

    Most of the Linux systems provide uname to detect system released information.

    Release Information File

    Most of the Linux distributions maintain release information file in an/etc/directory. Here is the list of files on some of the well known Linux distributions:

    Novell SUSE /etc/SUSE-release
    Red Hat /etc/redhat-release, /etc/redhat_version
    Fedora /etc/fedora-release
    Slackware /etc/slackware-release, /etc/slackware-version
    Debian /etc/debian_release, /etc/debian_version,
    Mandrake /etc/mandrake-release
    Yellow dog /etc/yellowdog-release
    Sun JDS /etc/sun-release
    Solaris/Sparc /etc/release
    Gentoo /etc/gentoo-release
    UnitedLinux /etc/UnitedLinux-release
    ubuntu /etc/lsb-release

    Sample Script

    Using system command uname and contents of the release files you can write scripts of programs to help your software to detect distribution.

    #!/bin/sh
    # Detects which OS and if it is Linux then it will detect which Linux Distribution.
    
    OS=`uname -s`
    REV=`uname -r`
    MACH=`uname -m`
    
    GetVersionFromFile()
    {
    	VERSION=`cat $1 | tr "
    " ' ' | sed s/.*VERSION.*= // `
    }
    
    if [ "${OS}" = "SunOS" ] ; then
    	OS=Solaris
    	ARCH=`uname -p`	
    	OSSTR="${OS} ${REV}(${ARCH} `uname -v`)"
    elif [ "${OS}" = "AIX" ] ; then
    	OSSTR="${OS} `oslevel` (`oslevel -r`)"
    elif [ "${OS}" = "Linux" ] ; then
    	KERNEL=`uname -r`
    	if [ -f /etc/redhat-release ] ; then
    		DIST='RedHat'
    		PSUEDONAME=`cat /etc/redhat-release | sed s/.*(// | sed s/)//`
    		REV=`cat /etc/redhat-release | sed s/.*release // | sed s/ .*//`
    	elif [ -f /etc/SUSE-release ] ; then
    		DIST=`cat /etc/SUSE-release | tr "
    " ' '| sed s/VERSION.*//`
    		REV=`cat /etc/SUSE-release | tr "
    " ' ' | sed s/.*= //`
    	elif [ -f /etc/mandrake-release ] ; then
    		DIST='Mandrake'
    		PSUEDONAME=`cat /etc/mandrake-release | sed s/.*(// | sed s/)//`
    		REV=`cat /etc/mandrake-release | sed s/.*release // | sed s/ .*//`
    	elif [ -f /etc/debian_version ] ; then
    		DIST="Debian `cat /etc/debian_version`"
    		REV=""
    
    	fi
    	if [ -f /etc/UnitedLinux-release ] ; then
    		DIST="${DIST}[`cat /etc/UnitedLinux-release | tr "
    " ' ' | sed s/VERSION.*//`]"
    	fi
    	
    	OSSTR="${OS} ${DIST} ${REV}(${PSUEDONAME} ${KERNEL} ${MACH})"
    
    fi
    
    
    echo ${OSSTR}



    from http://www.novell.com/coolsolutions/feature/11251.html

  • 相关阅读:
    如何写Makefile?
    C语言变量的存储类别详解
    Longest Palindrome Substring
    Count Primes
    Closest Binary Search
    Search Insert Position
    Set Matrix Zeros ****
    Search for a Range
    Two Sum II
    Jump Game
  • 原文地址:https://www.cnblogs.com/kex1n/p/6595831.html
Copyright © 2011-2022 走看看