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

  • 相关阅读:
    解决后退网页已过期或刷新询问是否重新提交表单的问题
    一行代码获取中文星期
    单例模式弹出窗体实现
    JAVA实现冒泡排序
    关于BufferedWriter.write超过30W条数据写入过慢问题。
    Ibatis的简单介绍
    链接注入(便于跨站请求伪造)(AppScan扫描结果)
    会话标识未更新(AppScan扫描结果)
    跨站点脚本编制实例(AppScan扫描结果)
    深入Java核心 Java内存分配原理精讲
  • 原文地址:https://www.cnblogs.com/kex1n/p/6595831.html
Copyright © 2011-2022 走看看