专栏首页任浩强的运维生涯shell脚本批量收集linux服务器的硬件信息快速实现

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

  1. 安装ansible批量管理系统。(没有的话,ssh远程命令循环也可以)
  2. 在常用的数据库里面新建一张表,用你要收集的信息作为列名,提供可以用shell插入.
  1. 批量安装所需工具包,smartmontools、dmidecode、mysql,可以用ansible命令:ansible all_host -s -m yum -a "name=mysql"
  2. 在本地写脚本。
  1. 获取默认IP:default_ip=$(ifconfig|head -n 2|tail -n 1|cut -d ":" -f 2|cut -d " " -f 1)
  2. 获取产品的名称,如果是简化版的linux系统,需要先安装dmidecode工具包:product_name=$(dmidecode -t1|grep Name|cut -d " " -f 3)
  3. 获取产品的序列号:serial_number=$(dmidecode -t1|grep Serial|cut -d " " -f 3)
  4. 获取CPU个数:cpu_count=$(dmidecode|grep CPU|grep Version|wc -l)
  5. 获取CPU的名字:cpu_name=$(dmidecode|grep CPU|grep Version|cut -d " " -f 2-|uniq)
  6. 获取内存容量,用free命令也挺好的,只是没有单位:mem_total=$(cat /proc/meminfo|head -n 1|tr -s [:space:]|cut -d ' ' -f 2-)
  7. 获取硬盘存储容量:disk_size=$(fdisk -l|grep "Disk /dev/sda"|grep -v GPT|cut -d " " -f 3-|cut -d "," -f 1)
  8. 获取硬盘型号,使用smartctl命令之前也要先安装smartmontools工具包:disk_name=$(smartctl -a /dev/sda|grep "Product:"|awk '{print $2}')
  9. 获取硬盘序列号:disk_serial_number=$(smartctl -a /dev/sda|grep "Serial number:"|awk '{print $3}')
  10. 定义sql插入语句:sql="insert into hctt_machine_info(default_ip,product_name,serial_number,cpu_count,cpu_name,mem_total,disk_name,disk_serial_number,disk_size) \ values('$default_ip','$product_name','$serial_number','$cpu_count','$cpu_name','$mem_total','$disk_name','$disk_serial_number','$disk_size')"
  11. 写登陆数据库和插入操作的命令:mysql -h **** -uroot -p**** -D hctt_sysop -e "$sql"
  12. 本地脚本完成。
  1. 用ansible的script模块远程执行本地脚本:ansible -s -m script -a "****/dardware.sh"
  2. 用navicat连接数据库,然后把它导出excel表。
  1. 导出的发现有些信息是空的。
  1. 命令在本机查一下,确实是空值。
  1. 排查。发现一个错误。                               
  1. 查看接口的详细信息:sudo smartctl -d scsi -a /dev/sda
  1. 阵列卡需要安装特殊工具MegaRAID查看。
    1. 下载:ftp://download2.boulder.ibm.com/ecc/sar/CMA/XSA/ibm_utl_sraidmr_megacli-8.00.48_linux_32-64.zip。(如果连接不可用,或者很慢,可以找我要)
    2. 安装 。 #unzip ibm_utl_sraidmr_megacli-8.00.48_linux_32-64.zip #cd linux # rpm -ivh Lib_Utils-1.00-09.noarch.rpm  MegaCli-8.00.48-1.i386.rpm #记得两个安装包的顺序,不然会出错。
    3. 使用方法:*/MegaCli64 -LDInfo -Lall -aALL
    1. 如果不知道MegaRAIN命令路径,可以查找可执行文件。
    2. 下面是其他一些网上收集的信息查询。
    #/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL 查raid级别
    #/opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -aALL 查raid卡信息
    #/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL 查看硬盘信息
    #/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -aAll 查看电池信息
    #/opt/MegaRAID/MegaCli/MegaCli64 -FwTermLog -Dsply -aALL 查看raid卡日志
    #/opt/MegaRAID/MegaCli/MegaCli64 -adpCount 【显示适配器个数】
    #/opt/MegaRAID/MegaCli/MegaCli64 -AdpGetTime –aALL 【显示适配器时间】
    #/opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -aAll 【显示所有适配器信息】
    #/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -LALL -aAll 【显示所有逻辑磁盘组信息】
    #/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll 【显示所有的物理信息】
    #/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuStatus -aALL |grep ‘Charger Status’ 【查看充电状态】
    #/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuStatus -aALL【显示BBU状态信息】
    #/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuCapacityInfo -aALL【显示BBU容量信息】
    #/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuDesignInfo -aALL 【显示BBU设计参数】
    #/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuProperties -aALL 【显示当前BBU属性】
    #/opt/MegaRAID/MegaCli/MegaCli64 -cfgdsply -aALL 【显示Raid卡型号,Raid设置,Disk相关信息】
    3.磁带状态的变化,从拔盘,到插盘的过程中。
    Device |Normal|Damage|Rebuild|Normal
    Virtual Drive |Optimal|Degraded|Degraded|Optimal
    Physical Drive |Online|Failed –> Unconfigured|Rebuild|Online
    4.查看磁盘缓存策略
    #/opt/MegaRAID/MegaCli/MegaCli64 -LDGetProp -Cache -L0 -a0
    or
    #/opt/MegaRAID/MegaCli/MegaCli64 -LDGetProp -Cache -L1 -a0
    or
    #/opt/MegaRAID/MegaCli/MegaCli64 -LDGetProp -Cache -LALL -a0
    ro
    #/opt/MegaRAID/MegaCli/MegaCli64 -LDGetProp -Cache -LALL -aALL
    ro
    #/opt/MegaRAID/MegaCli/MegaCli64 -LDGetProp -DskCache -LALL -aALL
    5.设置磁盘缓存策略
    缓存策略解释:
    
    WT (Write through
    WB (Write back)
    NORA (No read ahead)
    RA (Read ahead)
    ADRA (Adaptive read ahead)
    Cached
    Direct
    例子:
    #/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp WT|WB|NORA|RA|ADRA -L0 -a0
    or
    #/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -Cached|-Direct -L0 -a0
    or
    enable / disable disk cache
    #/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -EnDskCache|-DisDskCache -L0 -a0
    6.创建一个 raid5 阵列,由物理盘 2,3,4 构成,该阵列的热备盘是物理盘 5
    #/opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r5 [1:2,1:3,1:4] WB Direct -Hsp[1:5] -a0
    7.创建阵列,不指定热备
    #/opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r5 [1:2,1:3,1:4] WB Direct -a0
    8.删除阵列
    #/opt/MegaRAID/MegaCli/MegaCli64 -CfgLdDel -L1 -a0
    9.在线添加磁盘
    #/opt/MegaRAID/MegaCli/MegaCli64 -LDRecon -Start -r5 -Add -PhysDrv[1:4] -L1 -a0
    10.阵列创建完后,会有一个初始化同步块的过程,可以看看其进度。
    #/opt/MegaRAID/MegaCli/MegaCli64 -LDInit -ShowProg -LALL -aALL
    或者以动态可视化文字界面显示
    #/opt/MegaRAID/MegaCli/MegaCli64 -LDInit -ProgDsply -LALL -aALL
    11.查看阵列后台初始化进度
    #/opt/MegaRAID/MegaCli/MegaCli64 -LDBI -ShowProg -LALL -aALL
    或者以动态可视化文字界面显示
    #/opt/MegaRAID/MegaCli/MegaCli64 -LDBI -ProgDsply -LALL -aALL
    12.指定第 5 块盘作为全局热备
    #/opt/MegaRAID/MegaCli/MegaCli64 -PDHSP -Set [-EnclAffinity] [-nonRevertible] -PhysDrv[1:5] -a0
    13.指定为某个阵列的专用热备
    #/opt/MegaRAID/MegaCli/MegaCli64 -PDHSP -Set [-Dedicated [-Array1]] [-EnclAffinity] [-nonRevertible] -PhysDrv[1:5] -a0
    14.删除全局热备
    #/opt/MegaRAID/MegaCli/MegaCli64 -PDHSP -Rmv -PhysDrv[1:5] -a0
    15.将某块物理盘下线/上线
    #/opt/MegaRAID/MegaCli/MegaCli64 -PDOffline -PhysDrv [1:4] -a0
    #/opt/MegaRAID/MegaCli/MegaCli64 -PDOnline -PhysDrv [1:4] -a0
    16.查看物理磁盘重建进度
    #/opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -ShowProg -PhysDrv [1:5] -a0
    或者以动态可视化文字界面显示
    #/opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -ProgDsply -PhysDrv [1:5] -a0
    
    磁带状态的变化,从拔盘,到插盘的过程中:
    Device |Normal|Damage|Rebuild|Normal
    Virtual Drive |Optimal|Degraded|Degraded|Optimal
    Physical Drive |Online|Failed –> Unconfigured|Rebuild|Online
sudo find / -name MegaCli64
  1. 填满了空格就可以导出了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 零基础到精通Linux,从这篇文章开始

    正好在最近,看到了一篇不错的资料,其中对于Linux入门学习的描述极其详尽,因此特别摘抄其中段落,制作成思维导图分享给大家。

    马哥linux运维
  • 零基础到精通Linux,从这篇文章开始

    正好在最近,看到了一篇不错的资料,其中对于Linux入门学习的描述极其详尽,因此特别摘抄其中段落,制作成思维导图分享给大家。

    马哥教育
  • 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路

    做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点。 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在...

    小小科
  • 快捷运维shell包

    快捷运维,代号:kjyw,运维脚本工具库,项目基于shell开发,收集各类运维常用工具脚本;实现快速安装nginx、mysql、php、redis、nagios...

    程序源代码
  • LINUX运维学习之综合架构篇——Ansible 批量管理服务上

    1、主机清单配置 2、 软件模块信息 3、 基于秘钥连接主机 4、 主机需要关闭selinux 5、 软件剧本功能 7、a...

    黑小白
  • 高级运维工程师学习路线

    信息安全公益宣传,信息安全知识启蒙。 ? 运维工程师在前期是一个很苦逼的工作,在这期间可能干着修电脑、掐网线、搬机器的活,显得没地位!时间也很碎片化,各种零碎...

    企鹅号小编
  • Linux服务器管理面板appnode

    最近有发现一个比较不错的Linux服务器管理面板AppNode,AppNode 是一款针对 Linux 服务器的控制管理软件,通过在云服务器内部安装 AppNo...

    爱游博客
  • Linux系统安全 | Linux中的Shell和Bash

    学安全的我们,经常会听到说获得某服务器的shell,就是指获得某个服务器的操作权限。我们学习linux时,经常会遇到bash,bash也是指的是某个服务器的权限...

    Gcow安全团队
  • 如何高效使用脚本?读它

    ? 当你购买了一台 Linux 服务器,想将 Web 应用代码部署到服务器上,并在更新代码版本时能够重新部署,该怎么做? 首先你需要通过 SSH 远程连接到服...

    腾讯云计算产品团队

作者介绍

一夕如环

博智税通信息科技股份有限公司广东分公司运维工程师

博智税通信息科技股份有限公司广东分公司 · 运维工程师 (已认证)

专栏

精选专题

活动推荐

扫码关注云+社区

领取腾讯云代金券