Pular para o conteúdo

relatório de hardware usando shell script [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. relatório de hardware usando shell script [RESOLVIDO]

Enviado em 29/02/2012 - 06:39h

Estou fazendo um programa shell script para gerar um relatório de hardware. Uso o comando hwinfo --disk | egrep '(Model:|Vendor:|Device:|Size)' para gerar o arquivo abaixo:

Model: "SAMSUNG HD322HJ"
Vendor: "SAMSUNG"
Device: "HD322HJ"
Size: 625142448 sectors a 512 bytes
Model: "SAMSUNG HD321HJ"
Vendor: "SAMSUNG"
Device: "HD321HJ"
Size: 625142448 sectors a 512 bytes

Os dois discos que tenho são de 320 Gb. Desejo que o resultado do tamanho seja exibido no relatório da forma Size: 320 Gb.

Se eu usar algo como

x=$(echo "(625142448*512)/1000000000" | bc)
echo $x

tenho o retorno de 320 Gb desejado, mas não sei como fazer isso, pois posso ter máquinas com um nr variado de HD.

Responder tópico

2. Re: relatório de hardware usando shell script [RESOLVIDO]

Melhor resposta

Enviado em 29/02/2012 - 08:47h

Olá,

Coloquei seus comandos em um script e criei uma função de conversão:


#!/bin/bash
# relatorio.sh

function alterar_tamanho {
echo -n 'Size: '
x=$(echo "($2 * 512)/1000000000" | bc)
echo $x GB
}

hwinfo --disk | egrep '(Model:|Vendor:|Device:|Size)' |
while read LINE;
do
[[ $LINE =~ ^Size: ]] && alterar_tamanho $LINE ||
echo $LINE
done

Para executar:
$ chmod +x relatorio.sh
$ ./relatorio.sh

Model: "SAMSUNG HD322HJ"
Vendor: "SAMSUNG"
Device: "HD322HJ"
Size: 320 GB
Model: "SAMSUNG HD321HJ"
Vendor: "SAMSUNG"
Device: "HD321HJ"
Size: 320 GB
No mais o que o script faz é ler linha por linha da saída do hwinfo e quando ele encontrar uma linha que começa com 'Size: ', essa linha é fornecida para a função alterar_tamanho para ela retornar em GB.

Em alguns casos, os comandos oferecem opções como --human-readable e --size-blocks para retornar os tamanhos em outras unidades. Não sei se é o caso do hwinfo (não tenho ele instalado), mas vale a pena conferir a man page.

Acho que é isso. t+

3. relatório de hardware usando shell script

Enviado em 29/02/2012 - 09:53h

Obrigado Marcos. Resolveu meu problema.

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder