Linux shell脚本应用之服务器硬件检测1

expr参考:http://blog.chinaunix.net/uid-209416-id-2410742.html

stty参考:http://blog.csdn.net/ysdaniel/article/details/6965339

$?#&01参考:http://www.2cto.com/os/201305/210831.html

exit参考:http://blog.163.com/[email protected]/blog/static/96061992201311712658570/

trap 参考:http://blog.csdn.net/cheungjustin/article/details/5678679

break & continue参考:http://www.2cto.com/os/201305/209361.html

for & while参考:http://www.cnblogs.com/kangyoung/p/3556186.html

if参考:http://www.2cto.com/os/201503/379433.html

echo参考:http://www.linuxidc.com/Linux/2014-10/107550.htm

read参考:http://man.linuxde.net/read

awk参考:http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html

去除空格参考:http://bbs.chinaunix.net/thread-2195137-1-1.html

tee参考:http://blog.csdn.net/yucan1001/article/details/8453527

tr参考:http://blog.sina.com.cn/s/blog_58c3f7960100uttl.html & http://man.linuxde.net/tr

sed参考:http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html

  1 #!/bin/bash
  2 # Author:Yingtao.Gu
  3 # Copyright (c) 2016.1
  4 # Script listed as  below:
  5
  6 ##########Main  Title################
  7 echo -e "Which item you want to choose[1-6] ? \nYou can type exit to exit this interactive window.\n1.CPU\n2.RAM\n3.Disk\n4.HCA\n5.NIC\n6.MotherBoard\nThe results will be saved in the opt directory."
  8 read Choice
  9
 10 ##########Public variable############
 11 Begin=####################################################Begin####################################################
 12 End=#####################################################End#####################################################
 13 echo1="----->"
 14 save="/opt/ServerInformationCollection"
 15
 16 #########1.CPU######
 17 if [ $Choice -eq 1 ];then
 18     PHNUM=`/usr/bin/lscpu  | egrep  Socket | gawk -F: ‘ { print$2 }‘`
 19     CONUM=`/usr/bin/lscpu | egrep ^Core | awk ‘{ print$4 }‘`
 20     echo "$Begin" 2>&1 | tee -a $save
 21     echo -e "Cpu Mode is $echo1`/usr/bin/lscpu | egrep "Model name" | gawk -F: ‘{ print $2 }‘| tr -d " "`" 2>&1 | tee -a $save
 22     echo "Phsical Cpu is $echo1 `/usr/bin/lscpu  | egrep  Socket | gawk -F: ‘ { print$2 }‘|tr -d " "`" 2>&1 | tee -a $save
 23     echo "Phsical Core is $echo1`expr $PHNUM \* $CONUM`"
 24     echo "Cpu Total Thread is $echo1 `/usr/bin/lscpu  | egrep  "^CPU\(s\)\:" | gawk -F: ‘ { print$2 }‘|tr -d " "`" 2>&1 | tee -a $save
 25     echo "$End" 2>&1 | tee -a $save
 26
 27 #########2.Memory######
 28 elif [ $Choice -eq 2 ];then
 29     echo "$Begin" 2>&1 | tee -a $save
 30     echo "`/usr/sbin/dmidecode -t memory | egrep -A8 -i size  | egrep "(Locator:|Size:|Speed:|Manufacturer:)" | egrep -vi "No Module Installed" | egrep -A4 -i  Size  | egrep -vi "Bank Locator:"`" 2>&1 | tee -a $save
 31     echo "$End" 2>&1 | tee -a $save
 32
 33 ########3.LSI########
 34 elif [ $Choice -eq 3 ];then
 35     echo -e "which item you want to choose[1-2] ? \n1.Megaraid Card\n2.SAS Hba Card"
 36     read choice2
 37     if [ $choice2 -eq 1 ] ; then
 38         RAID=`/usr/sbin/lspci | egrep -i RAID | awk ‘{ print $12 }‘`
 39         if  [ "$RAID" == "2208" ] || [ "$RAID" == "2108" ];then
 40             echo "$Begin" 2>&1 | tee -a $save
 41             echo "`/opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo  -aALL | egrep "Product Name|FW Version|Serial No"`" 2>&1 | tee -a $save
 42             echo "`/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL | egrep -i "Raw Size|Enclosure Device ID:|Slot Number:|Firmware state|Inquiry Data|foreign"  | sort`" 2>&1 | tee -a $save
 43             echo "`/opt/MegaRAID/MegaCli/MegaCli64   -LDGetNum -aAll`" 2>&1 | tee -a $save
 44             echo "`/opt/MegaRAID/MegaCli/MegaCli64  -CfgDsply -a0 | egrep "RAID Level"`" 2>&1 | tee -a $save
 45             echo "$End" 2>&1 | tee -a $save
 46         else
 47             echo "$Begin" 2>&1 | tee -a $save
 48             echo "Here are not any megaraid card can be detected" 2>&1 | tee -a $save
 49             echo "$End" 2>&1 | tee -a $save
 50         fi
 51     elif [ $choice2 -eq 2 ];then
 52         SERIAL=`/usr/sbin/lspci | egrep -i serial | awk ‘{ print$11 }‘`
 53         if [ "$SERIAL" == SAS2308 ] || [ "$SERIAL" == SAS2008 ];then
 54             SERNUM=`/usr/sbin/lspci | egrep -i Serial | wc -l`
 55             echo "$Begin" 2>&1 | tee -a $save
 56                 for ((i=0;i<$SERNUM;i++));do
 57                     echo -e "`/opt/smartmgr/scripts/sas2ircu $i display |  egrep "Controller type|Firmware version|Volume ID|Status of volume|Enclosure #|Slot #|State|Size|Model Number|Firmware Revision|Serial No" | sort`" 2>&1 | tee -a $save
 58                 done
 59             echo "$End" 2>&1 | tee -a $save
 60         else
 61             echo "$Begin" 2>&1 | tee -a $save
 62             echo "Here are not any sas hba card can be detected " 2>&1 | tee -a $save
 63             echo "$End" 2>&1 | tee -a $save
 64         fi
 65     else
 66         echo "$Begin" 2>&1 | tee -a $save
 67         echo "Here are not any Lsi SAS and Raid card can be detected." 2>&1 | tee -a $save
 68         echo "$End" 2>&1 | tee -a $save
 69     fi
 70
 71 ########4.IB########
 72 elif [ $Choice -eq 4 ];then
 73     MT=`/usr/sbin/lspci | egrep -i mt`
 74     if [ -n "$MT" ];then
 75         echo "$Begin" 2>&1 | tee -a $save
 76         echo "`/usr/sbin/lspci | egrep -i mellanox`" 2>&1 | tee -a $save
 77         ME=`/usr/sbin/lspci  | egrep -i mt | awk -F: ‘{ print$1 }‘`
 78             for i1 in $ME;do
 79                 echo "`/usr/sbin/lspci -vv -s 0000:$i1:00.0 |grep SN |awk -F ‘: ‘ ‘{print$2}‘`" 2>&1 | tee -a $save
 80             done
 81         echo "$End" 2>&1 | tee -a $save
 82     else
 83         echo "$Begin" 2>&1 | tee -a $save
 84         echo "Here are not any Mellanox ib card can be detected" 2>&1 | tee -a $save
 85         echo "$End" 2>&1 | tee -a $save
 86     fi
 87
 88 ######5.NIC#######
 89 elif [ $Choice -eq 5 ];then
 90     echo "$Begin" 2>&1 | tee -a $save
 91     echo "`/usr/sbin/lspci  | egrep -i network | egrep -v MT`" 2>&1 | tee -a $save
 92     echo "$End" 2>&1 | tee -a $save
 93
 94 ######6.MotherBoard######
 95 elif [ $Choice -eq 6 ];then
 96     echo "$Begin" 2>&1 | tee -a $save
 97     echo -e "`/usr/sbin/dmidecode  -s  bios-vendor`\n`/usr/sbin/dmidecode  -s  bios-version`\n`/usr/sbin/dmidecode  -s  bios-release-date`\n`/usr/sbin/dmidecode  -s  system-product-name`\n`/usr/sbin/dmidecode  -s   baseboard-serial-number`" 2>&1 | tee -a $save
 98     echo "$End" 2>&1 | tee -a $save
 99 else
100     echo "Please do it carefully!!!" 2>&1 | tee -a $save
101 fi
时间: 2024-10-29 19:10:09

Linux shell脚本应用之服务器硬件检测1的相关文章

Linux shell脚本基础学习详细介绍(完整版)二

详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续. Linux shell脚本基础已经被分成好几个部分了,这里对控制流程的内容也就马上讲完了,这是最后一部分关于here document,这里举例稍微有点复杂,我们慢慢来分析这个复杂Linux shell脚本. 6. Here documents 当要将几行文字传递给一个命令时,here docu

Linux shell脚本判断服务器网络是否可以上网

Linux shell脚本判断网络畅通 介绍 在编写shell脚本时,有的功能需要确保服务器网络是可以上网才可以往下执行,那么此时就需要有个函数来判断服务器网络状态 我们可以通过curl来访问 www.baidu.com,从而判断服务器网络状态是否可以畅通的 网络状态判断 #!/bin/bash #检测网络链接畅通 function network() { #超时时间 local timeout=1 #目标网站 local target=www.baidu.com #获取响应状态码 local

Linux Shell脚本攻略(1.10)

1.10 获取.设置日期和延时 很多应用程序需要以不同的格式打印日期.设置日期和时间.根据日期和时间执行某项操作.延时通常用于在程序执行过程中提供一段等待时间(比如1秒).同样的,我们也能够一多种格式打印日期,或者在命令行中设置日期.在类Unix系统中,日期被存储为一个整数,其大小为自世界标准时间起所流逝的秒数.这种计时方式称为纪元时或Unix时间. 1.10.1 获取.设置时间 以下的程序给出了多种用法: #!/bin/bash start=$(date +%s) #获取纪元时间 date #

Linux Shell脚本攻略(1.8)

1.8 使用别名 linux中的别名就相当于windows中的快捷方式,使用别名可以省去用户输入一长串命令序列的麻烦. 1.8.1 创建临时别名(快捷方式) alias new_command='command sequence' #格式说明 alias install='sudo apt-get install' #实例说明 在声明 install='sudo apt-get install'之后,就可以用install代替'sudo apt-get install'了.使用这种方式声明的别名

Linux shell脚本基础学习详细介绍(完整版)一

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Linux 脚本编写基础◆1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执

Linux shell脚本流程控制

博主搬家至51CTO,初来乍到,请多指教. 此次我们来通过实例解析Linux shell脚本流程控制 Linux shell脚本流程控制可分为三类:顺序执行,条件选择执行,循环执行 顺序执行:简单理解就是逐行执行脚本内容,逐行解读,逐行执行.(此处不做实例解析) 条件选择执行:可以理解为先进行某一条件的判断选择,再决定执行怎样的脚本内容.常见语句if case 条件选择语句:if if语句用法: 单分支 if 判断条件;then 条件为真的分支代码 fi 双分支 if 判断条件; then 条件

Linux shell脚本中shift的用法说明

Linux shell脚本中shift的用法说明 shift命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本). 示例1:依次读取输入的参数并打印参数个数: run.sh: #!/bin/bash while [ $# != 0 ];do echo "第一个参数为:$1,参数个数为:$#" shift done 输入如下命令运行:run.sh a b c d e f 结果显示如下: 第一个参数为:a

Linux Shell脚本攻略(1.2)

1.2 终端打印 终端是交互式工具,用户可以通过它与shell环境进行交互.在终端中打印文本是大多数shell脚本和工具日常需要执行的基本任务.通过终端打印,人们可以知道系统的运行状态,这对用户来说是至关重要的. echo终端打印 echo "Welcome to Bash" echo 'Welcome to Bash' echo Welcome to Bash 以上三种方法的效果是一样的,输出内容都是"Welcome to Bash",并在末尾添加换行符.在默认情

Linux Shell脚本编程学习笔记和实战

http://www.1987.name/141.html shell基础 终端打印.算术运算.常用变量 Linux下搜索指定目录下特定字符串并高亮显示匹配关键词 从键盘或文件中获取标准输入 [read命令] 文件的描述符和重定向 数组.关联数组和别名使用 函数的定义.执行.传参和递归函数 条件测试操作与流程控制语句 获取时间日期格式和延时 [date.sleep命令] 内部字段分隔符IFS和脚本的调试DEBUG 显示.读取或拼接文件内容 [cat命令] 文件查找与打印文件列表 [find命令]