Como coletar informações específicas em um arquivo

0

Eu tenho a necessidade de informações de hardware diferentes. como números de série, recursos, entre muitos outros, e para isso, encontrei o hwinfo , mas ele obtém informações muito além do que eu preciso.

Por exemplo:

18: IDE 200.0: 10600 Disk
[Created at block.245] 
Unique ID: WZeP.yFECJK3_8V4
Parent ID: w7Y8.7HLn7TSO9I7
SysFS ID: / class / block / sdb
SysFS BusID: 2: 0: 0: 0
SysFS Device Link:/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0
Hardware Class: disk
Model: "KINGSTON SV300S3"
Vendor: "KINGSTON"
Device: "SV300S3"
Revision: "BBF0"
Serial ID "50026B77470B5AC3"
Driver: "ahci", "sd"
Driver Modules "ahci"
Device File: / dev / sdb
Device Files: / dev / sdb, / dev / disk / by-id / ata KINGSTON_SV300S37A120G_50026B77470B5AC3, / dev / disk / by-id / WWN-0x50026b77470b5ac3
Device Number: block 8: 16-8: 31
BIOS id: 0x81
Geometry (Logical): CHS 14593/255/63
Size: 234441648 sectors 512 bytes
Capacity: 111 GB (120,034,123,776 bytes)
Config Status: config = new, avail = yes, need = no, active = unknown
Attached to: # 13 (controller SATA)

Eu precisava que essas informações bloqueassem o Unique ID , Hardware class , model , Serial ID , Device File entre outros ...

Mas o problema não pára por aí, pois além de informações de disco, precisa de cpu, memória, etc. Como eu poderia estar selecionando essas informações e salvando-as em um arquivo de texto? Fazendo alguma pesquisa, encontrei o SED e AWK , mas acredito que implementar uma informação de caputra com esses dois programas seria trabalhoso, ou seria o caminho correto?

    
por SoabTI 02.07.2016 / 00:53

2 respostas

2

Enquanto sed e awk são poderosos, para os requisitos que você especificou até agora, você só precisa do muito mais simples grep :

$ hwinfo | grep -E 'Unique ID|Hardware class|model|Serial ID|Device File:'
Unique ID: WZeP.yFECJK3_8V4
Serial ID "50026B77470B5AC3"
Device File: / dev / sdb

(A saída acima foi gerada usando a saída hwinfo como mostrado na pergunta.)

    
por 02.07.2016 / 02:06
0

Tente começar com um script bash / shell que use sed com supressão e impressão.

Por exemplo, (e eu não estou familiarizado com o hwinfo, mas suponho que seja um comando que produza stdout):

hwinfo | sed -n '/^Unique ID.*/p; /^Hardware class.*/p;'

Isso fornecerá apenas as linhas de "ID exclusivo" e "Classe de hardware".

Para capturar em um arquivo e tornar este comando mais legível, basta usar > na saída para o arquivo e você pode dividir as linhas com \ :

Então, isso:

hwinfo | sed -n '/^Unique ID.*/p; /^Hardware class.*/p;' > myoutputfile.txt

Pode ser transformado em um comando de várias linhas, que pode capturar mais parâmetros, como este:

hwinfo | sed -n '/^Unique ID.*/p;'\
'/^Hardware class.*/p;'\
 > myoutputfile.txt # space at beginning of this line is important.
    
por 02.07.2016 / 01:16

Tags