服务器信息检测脚本

服务器信息检测脚本


一、适用环境

适用Bash作为默认shell且符合LSB标准的Linux系统。

二、脚本功能

  • 此脚本可检测目标系统的基本信息(系统、内核、主机名……)、CPU信息(总数、使用率……)、内存信息(物理内存,Swap的总量,使用率……)、磁盘信息(总量、使用率……)、网络信息(IP地址、网关……)。
  • 此脚本仅可检测单机服务器信息,未涉及远程查看服务器信息的功能。

三、使用方法

# chmod +x server_check_v1.0.sh
# ./server_check_v1.0.sh

四、运行结果

在这里插入图片描述

五、脚本

#!/bin/bash

:<<!
    功能:Linux服务器资源检查脚本。
            1、此脚本可检查目标服务器基础信息、CPU信息、内存信息、磁盘信息、网络信息。
            2、此脚本仅适用于单机服务器,未设计查看远程服务器信息功能。
            3、此脚本适用于符合LSB标准的系统。
    版本:1.0
    作者:SuiFenPX
    邮件:suifenpx@qq.com
    日期:2021-01-21
!

# 服务器基础信息检查函数
function server_basics_message() {
    echo -e -n "--------------------------------基础信息--------------------------------\n"

    local os_name=`grep "PRETTY_NAME" /etc/os-release | cut -d= -f2 | cut -d\" -f2`
    local kernel_release=`uname -r`
    local os_hostname=`hostname`
    local now_time=`date +%Y-%m-%d\ %H:%M:%S`
    local sys_lang=`echo $LANG`

    echo -e "  系    统:\t${os_name}"
    echo -e "  内    核:\t${kernel_release}"
    echo -e "  主 机 名:\t${os_hostname}"
    echo -e "  系统语系: \t${sys_lang}"
    echo -e "  当前时间:\t${now_time}"
}

# CPU基础信息检查函数
function cpu_message() {
    echo -e -n "--------------------------------CPU 信息--------------------------------\n"

    local physical_id=`grep "physical id" /proc/cpuinfo | sort | uniq | wc -l`
    local cpu_cores=`grep "cpu cores" /proc/cpuinfo | uniq | awk '{print $4}'`
    local siblings=`grep "siblings" /proc/cpuinfo | uniq | awk '{print $3}'`
    local processor=`grep "processor" /proc/cpuinfo | wc -l`

    local cpu_availing=`top -n1 -b | grep "%Cpu(s)" | cut -d, -f4 | cut -c 1-5 | sed -e 's/^[ ]*//g' | sed -e 's/[ ]*$//g'`
    local cpu_using=`awk 'BEGIN{printf "%0.2f%%",100-'${cpu_availing}'}'`

    if [ ${cpu_cores} -eq ${siblings} ]; then
        local is_use_hyper_threading="否"
    else
        local is_use_hyper_threading="是"
    fi

    echo -e "  物理CPU总数:        \t${physical_id}"
    echo -e "  逻辑CPU总数:        \t${processor}"
    echo -e "  每颗物理CPU的核心数:\t${cpu_cores}"
    echo -e "  是否使用超线程技术: \t${is_use_hyper_threading}"
    echo -e "  CPU使用率:          \t${cpu_using}"
}

# 内存基本信息检查函数
function mem_message() {
    echo -e -n "--------------------------------内存信息--------------------------------\n"

    local mem_total_tmp=`free | grep "Mem" | awk '{print $2}'`
    local mem_used_tmp=`free | grep "Mem" | awk '{print $3}'`
    local mem_free_tmp=`free | grep "Mem" | awk '{print $4}'`

    local mem_total=`awk 'BEGIN{printf "%0.2f",'${mem_total_tmp}'/1024/1024}'`
    local mem_used=`awk 'BEGIN{printf "%0.2f",'${mem_used_tmp}'/1024/1024}'`
    local mem_avail=`awk 'BEGIN{printf "%0.2f",'${mem_total}'-'${mem_used}'}'`
    local mem_free=`awk 'BEGIN{printf "%0.2f",'${mem_free_tmp}'/1024/1024}'`

    local mem_using=`awk 'BEGIN{printf "%0.2f%%",'${mem_used}'/'${mem_total}'*100}'`

    local swap_total_tmp=`free | grep "Swap" | awk '{print $2}'`
    local swap_total=`awk 'BEGIN{printf "%0.2f",'${swap_total_tmp}'/1024/1024}'`

    local is_exist_swap="Unknow"

    if [ ${swap_total} = "0.00" ]; then
        local is_exist_swap="No"
    else
        local swap_used_tmp=`free | grep "Swap" | awk '{print $3}'`
        local swap_free_tmp=`free | grep "Swap" | awk '{print $4}'`

        local swap_used=`awk 'BEGIN{printf "%0.2f",'${swap_used_tmp}'/1024/1024}'`
        local swap_avail=`awk 'BEGIN{printf "%0.2f",'${swap_total}'-'${swap_used}'}'`
        local swap_free=`awk 'BEGIN{printf "%0.2f",'${swap_free_tmp}'/1024/1024}'`

        local swap_using=`awk 'BEGIN{printf "%0.2f%%",'${swap_used}'/'${swap_total}'*100}'`
    fi

    echo -e "  物理内存:"
    echo -e "\t总量:\t${mem_total}G"
    echo -e "\t使用:\t${mem_used}G"
    echo -e "\t剩余:\t${mem_avail}G"
    echo -e "\t使用率:${mem_using}"
    echo -e "\tFree态:${mem_free}G"

    if [ ${is_exist_swap} = "No" ]; then
        echo -e "  该服务器无交换分区!"
    else
        echo -e "  交换分区:"
        echo -e "\t总量:\t${swap_total}G"
        echo -e "\t使用:\t${swap_used}G"
        echo -e "\t剩余:\t${swap_avail}G"
        echo -e "\t使用率:${swap_using}"
        echo -e "\tFree态:${swap_free}G"
    fi
}

# 磁盘基本信息检查函数
function disk_message() {
    echo -e -n "--------------------------------磁盘信息--------------------------------\n"

    local disk_dev_list=`fdisk -l | grep " /dev" | awk '{print $2}' | sed 's/:/ /g' | sed 's/:/ /g' | awk '{print $1}'`

    for disk_dev in ${disk_dev_list}; do
        local partition_list=`df | grep "${disk_dev}" | awk '{print $1}'`
        local partition_sum=`df | grep "${disk_dev}" | awk '{print $1}' | wc -l`

        local disk_dev_size=`fdisk -l | grep " ${disk_dev}" | sed 's/:/ /g' | sed 's/:/ /g' | sed 's/,/ /g' | sed 's/,/ /g' | awk '{print $3,$4}'`

        echo -e "  磁盘名称:\t${disk_dev}\t\t磁盘大小:${disk_dev_size}"

        if [ ${partition_sum} = "0" ];then
            echo -e "    未找到磁盘设备${disk_dev}的挂载点!"
        else
            for partition in ${partition_list}; do
                local mount_point=`df | grep "${partition}" | awk '{print $6}'`
                local mount_size_sum=`df | grep "${partition}" | awk '{printf "%0.2f", $2/1024/1024}'`
                local mount_size_used=`df | grep "${partition}" | awk '{printf "%0.2f", $3/1024/1024}'`
                local mount_size_avail=`df | grep "${partition}" | awk '{printf "%0.2f", $4/1024/1024}'`
                local mount_size_using=`awk 'BEGIN{printf "%0.2f%%",'${mount_size_used}'/'${mount_size_sum}'*100}'`

                echo -e "    挂载点:\t${mount_point}"
                echo -e "\t总量:\t${mount_size_sum}G"
                echo -e "\t使用:\t${mount_size_used}G"
                echo -e "\t剩余:\t${mount_size_avail}G"
                echo -e "\t使用率:${mount_size_using}"
            done
        fi
    done
}

# 网络基本信息检查函数
function network_message() {
    echo -e -n "------------------------------物理网卡信息------------------------------\n"

    local physical_network_card_list=`ls /sys/class/net/ | grep -v "\`ls /sys/devices/virtual/net/\`"`

    for physical_network_card in ${physical_network_card_list}; do
        local ipaddress_and_prefix=`ip addr | grep -A10 "${physical_network_card}" | awk '/inet/' | awk 'NR==1{print}' | awk '{print $2}'`
        local gateway=`ip addr | grep -A10 "${physical_network_card}" | awk '/inet/' | awk 'NR==1{print}' | awk '{print $4}'`

        if [ -z ${ipaddress_and_prefix} ]; then
            local ipaddress_and_prefix="未查询到${physical_network_card}网卡的IP地址!"
        fi
        if [ -z ${gateway} ]; then
            local gateway="未查询到${physical_network_card}网卡的网关地址!"
        fi

        echo -e "  网卡名称:\t${physical_network_card}"
        echo -e "    I P 地址:\t${ipaddress_and_prefix}"
        echo -e "    网关地址:\t${gateway}"
    done
    echo -e "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUJ5OiBTdWlGZW5QWC0t" | base64 -d
    echo -e -n "\n"
}

clear

# 总体调用
server_basics_message
cpu_message
mem_message
disk_message
network_message
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值