Inventário de Hardware 3.1

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

[ Hits: 5.246 ]

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

e17 Uptade

Encerrar vários processos de uma mesma aplicação

Instalar MP3 (e outros formatos) no ubuntu dapper automaticamente

Instalador Nagios 4.2 no Fedora 24

Album virtual para WEB


  

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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts