Como mostrar luns específicos do comando lsscsi?

4

Eu preciso do grep luns específico do comando lsscsi .

Por exemplo:

[root@e15l1 ~]# lsscsi 4 0 1 | awk '{print $1,$6}' | head
[4:0:1:0] -
[4:0:1:1] /dev/sdab
[4:0:1:2] /dev/sdj
[4:0:1:3] /dev/sdz
[4:0:1:4] /dev/sdk
[4:0:1:12] /dev/sdo
[4:0:1:13] /dev/sdp
[4:0:1:38] /dev/sdad

Como posso usar somente luns 1, 12 e 13?

Estou usando: lsscsi | awk '{ print $1,$6 }' | grep -w 4:0:1 | egrep -w '1|1[2-3]'

O problema é quando estou procurando por um lun com o mesmo número que outras scsi entradas. Por exemplo, no meu caso, pesquisar lun 1 fornecerá a saída inteira porque meu ID também é 1. Mesmo com lun 4 ( Host adapter ) ...

A saída deve ser como no exemplo, scsi entradas e /dev/...

    
por igor 24.10.2017 / 14:10

2 respostas

3

Tente isto:

lsscsi 4 0 1 | sed -r '/\[4:0:1:(1|12|13)\].*/!d'

A saída será:

[4:0:1:1] /dev/sdab
[4:0:1:12] /dev/sdo
[4:0:1:13] /dev/sdp
    
por 24.10.2017 / 14:26
2

Isso deve funcionar independentemente dos outros números em qualquer lugar da linha:

egrep '^\[\d+:\d+:\d+:(1|12|13)\]'

Pode ser necessário também inverter os dois pontos, não no computador atm para verificar.

Por fazer isso para um substituto de intervalo (1 | 2 | 13) para, por exemplo, (2 [0-8])

    
por 24.10.2017 / 15:22

Tags