Best way to find os name and version in Unix/Linux platform

后端 未结 9 873
天涯浪人
天涯浪人 2020-12-02 07:33

I need to find the OS name and version on Unix/Linux platform. For this I tried following:

  1. lsb_release utility

  2. /etc/redha

9条回答
  •  [愿得一人]
    2020-12-02 07:40

    This work fine for all Linux environment.

    #!/bin/sh
    cat /etc/*-release
    

    In Ubuntu:

    $ cat /etc/*-release
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=10.04
    DISTRIB_CODENAME=lucid
    DISTRIB_DESCRIPTION="Ubuntu 10.04.4 LTS"
    

    or 12.04:

    $ cat /etc/*-release
    
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=12.04
    DISTRIB_CODENAME=precise
    DISTRIB_DESCRIPTION="Ubuntu 12.04.4 LTS"
    NAME="Ubuntu"
    VERSION="12.04.4 LTS, Precise Pangolin"
    ID=ubuntu
    ID_LIKE=debian
    PRETTY_NAME="Ubuntu precise (12.04.4 LTS)"
    VERSION_ID="12.04"
    

    In RHEL:

    $ cat /etc/*-release
    Red Hat Enterprise Linux Server release 6.5 (Santiago)
    Red Hat Enterprise Linux Server release 6.5 (Santiago)
    

    Or Use this Script:

    #!/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 "\n" ' ' | 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 "\n" ' '| sed s/VERSION.*//`
            REV=`cat /etc/SuSE-release | tr "\n" ' ' | 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 "\n" ' ' | sed s/VERSION.*//`]"
        fi
    
        OSSTR="${OS} ${DIST} ${REV}(${PSUEDONAME} ${KERNEL} ${MACH})"
    
    fi
    
    echo ${OSSTR}
    

提交回复
热议问题