使用Shell脚本查詢服務器硬件信息

1、为了方便查询服务器的硬件信息,将需要查询的内容整理成Shell脚步,输出自己想要的格式。其实就是通过dmidecode命令输出,然后通过sed,awk,cut命令的处理。

2、此脚步适用于HP DL系列的服务器,Dell PowerEdge系列的会有少许内容不同,所以在抓取过程会有小小报错。

3、脚步内容如下:

#!/bin/bash
############################################################################
# Check the server hardware configuration
#
# History: 2016/04/16 zhuwei First release
############################################################################
 
# set a safe path before doing anything else
PATH=/sbin:/usr/sbin:/bin:/usr/bin; export PATH
 
# This script must be executed as root
RUID=`/usr/bin/id|awk -F\( ‘{print $1}‘|awk -F\=‘{print $2}‘`
# #OR# RUID=`id | cut -d\( -f1 | cut -d\= -f2` #OR#ROOT_UID=0
if [ ${RUID} != "0" ];then
    echo"This script must be executed as root"
    exit 1
fi
 
# Display an error and exit
errorExit() {
    echo"[email protected]" >&2
    exit 1
}
 
# Display the normal print
display() {
    echo -e"\033[32m*****************************************************************************************\033[0m"
    echo -e"\033[32m*\033[0m"[email protected]""
    echo -e"\033[32m*****************************************************************************************\033[0m"
}
 
#Check the server model, serial number
model() {
    dmidecode|grep "System Information" -A9|egrep"Manufacturer|Product|Serial"     | awk ‘BEGIN {FS="\n";RS=""} {print $1,$2,$3}‘ | sed ‘s/^[\t]//g‘
}
#Query cpu Information
cpu(){
    dmidecode| grep -A55 "Processor Information" |     egrep "Version:|Core Count:|Thread Count:"|sed -e ‘s/^[\t]//‘     -e‘/Version:/i\\‘ | sed ‘1d‘ | awk ‘BEGIN {FS="\n";RS=""}{print $1,$2,"\t"$3}‘    | sed‘s/Version://‘
}
#Query memory Information
memory(){
    dmidecode| grep -A12 "Memory Device"|egrep "Type:|Size|Speed:|Locator:P"     | sed -n -e ‘/MB/,/MHz/p‘ | sed ‘/Size:/i\\‘ | sed -e ‘1d‘ -e ‘s/^[\t]*//‘     | awk‘BEGIN {FS="\n";RS=""} {print $2} {print"\t"$3,"\t"$1,"\t"$4}‘
    #sed‘/Size:/i\\‘ | sed -e ‘1d‘ -e ‘s/^[\t]*//‘ #replaced#
    #awk‘BEGIN {FS="\n"}{if(NR%4==1){print "\n"}{print $1}}‘ | sed‘s/^[\t]*//‘
}
#Query Network Information
network(){
    i=0
    count=`dmidecode | grep -A4 "BIOS NIC"|sed -e ‘1d‘ | wc -l`
    if [ -f "/tmp/speed.txt" ];then
       rm -rf /tmp/speed.txt
    fi
    while [[${i} -lt ${count} ]]
    do
      ethtool eth"${i}"|grep "Speed:" >> /tmp/speed.txt
      let "i++"
    done
    dmidecode| grep -A4 "BIOS NIC"|sed -e ‘1d‘ -e ‘s/^[\t]//‘| cut -d, -f2 |     awk  ‘FNR==0 {print "\r\n" FILENAME}{print et NR-1 "\t" $0}‘     et="eth" > /tmp/network.txt
    paste /tmp/network.txt /tmp/speed.txt
}
 
display "System Information:" && model || errorExit "This command is error!"
display "CPU Information:" && cpu|| errorExit "This command is error!"
display "Memory Information:" && memory || errorExit "This command is error!"
display "Network Information:" && network || errorExit "This command is error!"

4、这里只对服务器厂商,内存,CPU配置和网卡信息,对于硬盘信息可根据不同厂商的管理工具来获取。HP使用hp-health-*rpm,G9版本以上使用hpssacli-*.rpm,安装以后使用:hpacucli ctrl all show config 查看RAID信息。Dell安装Dell OpenManage Server Administrator工具查看,通过命令:omreport storage pdisk controller=0来查看。

5、查看RAID信息还可以使用MegaCli开源工具进行查看,这里不作介绍。

时间: 2024-10-12 21:46:28

使用Shell脚本查詢服務器硬件信息的相关文章

shell脚本批量收集linux服务器的硬件信息快速实现

安装ansible批量管理系统.(没有的话,ssh远程命令循环也可以) 在常用的数据库里面新建一张表,用你要收集的信息作为列名,提供可以用shell插入. 批量安装所需工具包,smartmontools.dmidecode.mysql,可以用ansible命令:ansible all_host -s -m yum -a "name=mysql" 在本地写脚本. 获取默认IP:default_ip=$(ifconfig|head -n 2|tail -n 1|cut -d ":

創建HTTP 服務器

1 var http = require('http'); 2 var fs = require('fs'); 3 var server = http.createServer(function(req, res) { 4 if (req.url !== "/favicon.ico") { 5 req.on('data', function(data) { 6 console.log('服務器端接受到的數據: ' + decodeURIComponent(data)); 7 res.w

Nginx反向代理服務器解析

Nginx反向代理服務器     反向代理(reverse proxy)方式是指用代理服務器來接受Internet上的連接請求,然後將請求轉發給内部網絡中的上游服務器,從上游服務器上得到返回結果給internet上請求連接的客戶端,此時,代理服務器對外的表現就是一個web服務器. nginx具有强悍的高并發高負載能力,因此一般會作爲前端的服務器直接向客戶端提供靜態文件服務,但也有一些複雜.多變的業務不適合放到nginx服務器上,這時會用apache,tomcat等服務器來處理. nginx通常會

在Centos雲服務器上架設python3.6環境

雲服務器的管理少不了ssh工具.這裏不得不安利一下MobaXterm ,讓用了多年putty的我感到相當驚豔.免費版已經相當夠用,箇中方便美觀用了才知道好不好:) 言歸正傳,這裏記錄下設置的步驟: 1,這個server的OS是CentOS 7.3,默認運行python2.7版本.因此第一個要做的安裝python3.6替換掉python2.7作爲默認python環境. python -V //可以看到現在的python版本which python //可以看到現在Python的可執行文件位置 //

【Windows Server 2019】 Windows Admin Center 3 添加服務器

1.添加,選擇服務器2.輸入域的賬號(administrator)與密碼(###)3.輸入服務器名字,再輸入域的賬號(administrator)與密碼(###)4.因為沒有EX2019服務器的憑證,所以會出錯5.輸入計算機的管理員賬戶與密碼,注意,是本地計算機的管理員賬戶與密碼,按提交6.再次輸入域的賬號(administrator)與密碼(###)7.添加成功,再雙擊新添加的(ex2019.01ian.com)8.結果 原文地址:http://blog.51cto.com/happynews

如何通過SSH讓服務器遠程執行命令?

如何通過SSH讓服務器遠程執行命令? 0x00 前言 我有一塊Pi,掛着個服務,但是這服務只要長時間沒有通訊就會自己掛起.試着用crontab每小時自動重啓,有時候還是得手動重啓服務. 所以,我想幹脆每次打開終端要用的時候啓動一下得了. 但是每次SSH,輸密碼,執行命令太麻煩了,就想着能不能只用一條命令完成這件事. 0x01 SSH執行命令 看了下手冊,通過SSH執行命令,其實只要在主機名後面加個命令就完了. ssh [email protected]1.6 reboot 0x02 免密登入 遠

使用自动化shell脚本查找CPU使用的详细线程信息

项目加了些拦截器代码后,CPU报警,显示CPU使用率超过100%: 想要查找到底是哪些代码消耗的资源过多,从网上找到一篇博文,转载如下: http://blog.csdn.net/guixunlong/article/details/8450897 在知道哪个Java进程CPU占用率过高以后: 1.使用命令 jstack PID 命令打印出CPU占用过高进程的线程栈,例如jstack 12012 > 12012.txt 2.使用top -H -p PID 命令查看对应进程是哪个线程占用CPU过高

用nslookup查看郵件服務器的IP是否被Spam Advisory列入黑名单

网上有很多spam advisory数据库,例如spamhaus之类的. 例如,要查询IP 1.2.3.4 是否被ahbl.org列入黑名单,可以用下列命令 nslookup 4.3.2.1.dnsbl.ahbl.org 如果返还的结果是Non-existent domain,说明没有问题 如果返还的结果是127.0.0.x,说明被列入了黑名单,x有可以能是1-255的数值,具体原因就因数据库而异了. 当然,有些数据库提供网页查询,也很方便. 用命令查看的好处是可以写脚本同时查看多个数据库. 附

PHP header() 下載服務器文件亂碼,損壞解決辦法

header("Content-Type: application/octet-stream"); header('Content-Transfer-Encoding: binary'); header("Content-Disposition: attachment; filename=\"".$file_name."\""); readfile("lib/uploads/doc/".$file_name