Inventário de Hardware 3.1

Publicado por Alexandre Martins da Cunha (última atualização em 02/12/2018)

[ Hits: 973 ]

Download inventariohw3.1.sh

Download 1542877916.inventariohw3.4.sh (versão 2)




Precisei esses dias de um inventário de hardware (principalmente, quantidade de memória, quantidade de slots e quais em uso) e não achei nada que fosse aplicado direto pelo terminal, para rodar nas estações.

Versão Atual: 3.1

Histórico:

    v1.0 2017-01-10, Alexandre Cunha:
       - Versão inicial

    v2.0 2017-02-09, Alexandre Cunha:
       - Acrescentado suporte a discos;
       - Acresentado suporte a partições.
  
    v3.0 2017-02-20, Alexandre Cunha:
       - Programa reescrito do zero;
       - Refinado o código;
       - Uso de variáveis BD e funções(discos, particoes e interfacesRedes).

    v3.1 2017-10-03, Alexandre Cunha:
       - Removido os ramdrives da lista;
       - Corrigido BUG na numeração dos discos;
       - Corrigido erro de Ortografia.

Eis a saída do mesmo:

=========================================================
=  Informações de inventário - 06/10/2017 18:58 =
=========================================================

Nome do computador: base

1 - SISTEMA

1.1 Informações do Sistema Operacional:
     - Arquitetura: x86_64
     - Versão do Kernel: 4.9.10-040910-generic

1.2 Informações da Distribuição:
     - Distribuição:  Debian
     - Versão:  8.9
     - Codinome:  jessie

2 - REDE

2.1-Informações Placa de Rede (eth0):
     - Endereço IPv4: 192.168.0.3
     - Endereço MAC:  1c:1b:0d:92:9d:8f

3 - HARDWARE

3.1 Processador
     - Fabricante:  Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz
     - Modelo:  Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz
     - Velocidade (MHz): 3634MHz
     - Cache:  6144 KB

3.2 Memória
     - Máximo Suportado:  64 GB
     - Número de Slot(s):  4
     - Quantidade Instalada:  7928MB
     - Slot(s) em Uso: 8192

3.3 Discos

3.3.1- Disco sda
     - Tamanho : 465,8 GiB
     - Tabela de partição  : msdos
      Partições:
     
          - Nome :  sda1
          - Tamanho :  367MB
          - Tipo :  ntfs
    
          - Nome :  sda2
          - Tamanho :  126GB
          - Tipo :  ntfs
    
          - Nome :  sda3
          - Tamanho :  126GB
          - Tipo :  btrfs
    
          - Nome :  sda4
          - Tamanho :  248GB
          - Tipo :  ntfs
    
3.3.2- Disco sdb
     - Tamanho : 2,7 TiB
     - Tabela de partição  : gpt
      Partições:
     
          - Nome :  sdb1
          - Tamanho :  3001GB
          - Tipo :  ntfs
    
3.3.3- Disco sdc
     - Tamanho : 1,8 TiB
     - Tabela de partição  : msdos
      Partições:
     
          - Nome :  sdc1
          - Tamanho :  1999GB
          - Tipo :  ntfs
    
          - Nome :  sdc2
          - Tamanho :  1074MB
          - Tipo :  linux-swap(v1)    

  



Versões atualizadas deste script

Versão 2 - Enviado por Alexandre Martins da Cunha em 22/11/2018

Changelog: # Histórico:
#
# v1.0 2017-01-10, Alexandre Cunha:
# - Versão inicial
#
# v2.0 2017-02-09, Alexandre Cunha:
# - Acresentado suporte a discos
# - Acresentado suporte a partições
#
# v3.0 2017-02-20, Alexandre Cunha:
# - Programa reescrito do zero
# - Refinado o código
# - Uso de variáveis BD e funções(discos, particoes e interfacesRedes)
#
# v3.1 2017-03-20, Alexandre Cunha:
# - Pequenos Ajustes
#
# v3.2 2017-11-06, Alexandre Cunha:
# - Modificado o suporte a Rede para o Debian 9
#
# v3.3 2018-01-10, Alexandre Cunha:
# - Corrigido bug nos discos
#
# v3.4 2018-11-22, Alexandre Cunha:
# - Corrigido bug partição não formatada ou desconhecida
# - Alinhamento da variável BD a direita.
# Licença: GPL.

Download 1542877916.inventariohw3.4.sh


Esconder código-fonte

#!/bin/bash
#
# Inventário de Hardware.sh - Gera o inventário de Hardware
#
# Site      : http://ittisolucoes.com.br
# Autor     : Alexandre Cunha (Cunha A.M) <alexandremartinscunha@yahoo.com.br> 
# Manutenção: Alexandre Cunha (Cunha A.M) <alexandremartinscunha@yahoo.com.br>
#
#  -------------------------------------------------------------
#   Este programa cria um arquivo com o nome da máquina data e hora, anexando os dados referentes a configuração do hardware
#  -------------------------------------------------------------
#
#
# Histórico:
#
#    v1.0 2017-01-10, Alexandre Cunha:
#       - Versão inicial 
#
#    v2.0 2017-02-09, Alexandre Cunha:
#       - Acrescentado suporte a discos;
#       - Acrescentado suporte a partições.
#   
#    v3.0 2017-02-20, Alexandre Cunha:
#       - Programa reescrito do zero;
#       - Refinado o código;
#       - Uso de variáveis BD e funções(discos, particoes e interfacesRedes).
#
#    v3.1 2017-10-03, Alexandre Cunha:
#       - Removido os ramdrives da lista;
#       - Corrigido BUG na numeração dos discos;
#       - Corrigido erro de ortografia.
#
# Licença: GPL.

if [ $(id -u) != 0 ] ; then 
   echo "Você precisar ser root para rodar esse script"
   exit 1 ; 
fi


function interfacesRede(){
   interfacesRede=`ifconfig | cut -d" " -f1 | grep -v "lo"`
   numero=1
   for interfacesNome in $interfacesRede
   do
      echo "2.$((numero++))""-Informações Placa de Rede ($interfacesNome):"                                    >> $BD                  
      echo "     ""- Endereço IPv4: "`ifconfig $interfacesNome | grep 'inet end' | awk '{print $3}'`                  >> $BD   
      echo "     ""- Endereço MAC:  "`ifconfig $interfacesNome | grep HW | cut -c48-`                              >> $BD         
      echo ""                                                                                    >> $BD      
   done
}

function particoes(){
   particoes=`fdisk -l | grep /dev/ | grep -v Disco | grep $1 | cut -d" " -f1 | cut -d"/" -f3`
   for particao in $particoes
   do
      echo "     ""     ""- Nome : " $particao                                                                                    >> $BD
      capacidade=`parted /dev/$particao print | grep $particao | cut -d" " -f3`
      tipo=`parted /dev/$particao print | grep -v File | grep -v  Disk | grep -v model | grep -v Sector | grep -v Partition | grep -v model | cut -d" " -f14`
      echo "     ""     ""- Tamanho : " $capacidade                                                      >> $BD
      echo "     ""     ""- Tipo : " $tipo                                                            >> $BD
      echo "     "                                                                              >> $BD                        
   done
}


function discos(){
   discos=`fdisk -l | grep Disco | cut -d" " -f2 | cut -d"/" -f3| sed 's/://g'| grep -v ram`
   numero=1
   for disco in $discos
   do
      echo "3.3.$((numero++))""- Disco $disco "                                                         >> $BD      
      capacidade=`fdisk -l | grep Disco | grep -e $disco | cut -d" " -f3`                                       >> $BD
      escala=`fdisk -l | grep Disco | grep -e $disco | cut -d" " -f4 | sed 's/,//g'`                              >> $BD
      echo "     ""- Tamanho : "$capacidade $escala                                                      >> $BD
      echo "     ""- Tabela de partição  : "`parted /dev/$disco print | grep "Partition Table" | cut -d" " -f3`         >> $BD
      echo "      ""Partições:"                                                                     >> $BD
      echo "      "                                                                              >> $BD
      particoes $disco
   done
}
   BD=`hostname`.$(date +%d-%m-%Y-%H:%M).log
   echo ""                                                                                                      >> $BD
   echo "========================================================="                                            >> $BD
   echo "=  Informações de inventário - `date +'%d/%m/%Y %H:%M'` ="                                            >> $BD
   echo "========================================================="                                             >> $BD
   echo ""                                                                                           >> $BD 
   echo " Nome do computador: `hostname`"                                                                 >> $BD
   echo ""                                                                                       >> $BD
   echo "1 - SISTEMA"                                                                              >> $BD 
   echo ""                                                                                           >> $BD
   echo "1.1 Informações do Sistema Operacional:"                                                           >> $BD
   echo "     ""- Arquitetura: "`uname -m`                                                               >> $BD
   echo "     ""- Versão do Kernel: "`uname -r`                                                         >> $BD
   echo ""                                                                                       >> $BD
   echo "1.2 Informações da Distribuição:"                                                                 >> $BD
   echo "     ""- Distribuição: "`lsb_release -i | cut -d: -f2`                                             >> $BD
   echo "     ""- Versão: "`lsb_release -r | cut -d: -f2`                                                    >> $BD
   echo "     ""- Codinome: "`lsb_release -c | cut -d: -f2`                                                 >> $BD
   echo ""                                                                                     >> $BD
   echo "2 - REDE"                                                                                 >> $BD
   echo ""                                                                                     >> $BD
   interfacesRede                                                                                  
   echo "3 - HARDWARE"                                                                              >> $BD  
   echo ""                                                                                           >> $BD
   echo "3.1 Processador"                                                                              >> $BD
   echo "     ""- Fabricante: "`cat /proc/cpuinfo | head -n 31 | grep 'model name'  | cut -d : -f2`                    >> $BD
   echo "     ""- Modelo: "`cat /proc/cpuinfo | head -n 31 | grep 'model name'  | cut -d : -f2`                       >> $BD
   echo "     ""- Velocidade (MHz):" `cat /proc/cpuinfo | head -n 31 | grep 'cpu MHz' | cut -d : -f2 | cut -d . -f1`"MHz"    >> $BD
   echo "     ""- Cache: "`cat /proc/cpuinfo | head -n 31 | grep 'cache size' | cut -d : -f2 `                        >> $BD
   echo ""                                                                                         >> $BD
   echo "3.2 Memória"                                                                               >> $BD
   echo "     ""- Máximo Suportado: "`dmidecode -t memory | grep 'Maximum Capacity'| cut -d : -f2`                     >> $BD
   echo "     ""- Número de Slot(s): "`dmidecode -t memory | grep 'Number Of Devices' | cut -d : -f2`                   >> $BD
   echo "     ""- Quantidade Instalada:  "`free -m | grep 'Mem:' | awk '{print $2}'`"MB"                            >> $BD
   echo "     ""- Slot(s) em Uso: "`dmidecode -t memory | grep 'Size' | grep -v "No Module Installed" | cut -d" "  -f2`   >> $BD
   echo ""                                                                                         >> $BD
   echo "3.3 Discos"                                                                               >> $BD
   echo ""                                                                                       >> $BD   
   discos
   echo ""   
   echo "Gerado Inventário $BD" 
   sleep 2
   cat $BD   

Scripts recomendados

runit-fstab-generator

Menu em bash

Quantos delimitadores?

Iptables com Roteando via NAT

Backup em HD Externa com Rsync


  

Comentários
[1] Comentário enviado por hellnux em 03/12/2018 - 11:52h

Interessante o script. Parabéns!

Dando um dedo de contribuição, seria bom informar qual distribuição Linux é compatível com seu script. Nem todos possuem o comando lsb_release, ou o parted previamente instalado.

Embora o ifconfig funcione, ele já é considerado. (https://www.linuxdescomplicado.com.br/2017/07/ifconfig-e-outros-comandos-linux-de-rede-obsoletos-ha-anos-e-que-ja-possuem-sucessores.html)

Ao menos no CentOS, o comando hostname -I ("i" maiúsculo) retorna todos os IP, sem ter que ficar usando grep, awk ou qualquer comando a mais.


[2] Comentário enviado por alexandremc em 04/12/2018 - 01:57h


[1] Comentário enviado por hellnux em 03/12/2018 - 11:52h

Interessante o script. Parabéns!

Dando um dedo de contribuição, seria bom informar qual distribuição Linux é compatível com seu script. Nem todos possuem o comando lsb_release, ou o parted previamente instalado.

Embora o ifconfig funcione, ele já é considerado. (https://www.linuxdescomplicado.com.br/2017/07/ifconfig-e-outros-comandos-linux-de-rede-obsoletos-ha-anos-e-que-ja-possuem-sucessores.html)

Ao menos no CentOS, o comando hostname -I ("i" maiúsculo) retorna todos os IP, sem ter que ficar usando grep, awk ou qualquer comando a mais.


Obrigado pela dicas caro Hellnuz ;-)

Toda contribuição é bem vinda.

Eu vacilei aqui, quando posto algo ele diz que uso o Debian, aqui está omitido, vou acrescentar na lista, eu testei no Debian, provavelmente roda nas demais Debian likes e com pouca ou nenhum modificação baseadas em RedHat.

Eu tenho que atualizar o ifconfig para o ip a

O problema do hostname -I (tbm funciona no Debian) é que ele troca a ordem das placas de rede. Logo no servidor que tinha 4 ele colocou na seguinte ordem 3, 4, 1 e 2

Abraços

[3] Comentário enviado por albfneto em 04/12/2018 - 19:00h

muito bom isso, favoritado.
eu vou tentar em Sabayon, onde a priori, os comandos funcionam.
se não funcionar, eu tento modificar para Sabayon e se der certo, eu publico aqui e cito você.
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: [i] Sabayon, Gentoo, OpenSUSE, Mageia e OpenMandriva[/i].


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts