Мне нужно отсканировать вывод iostat -En
на машине Solaris, чтобы при обнаружении диска с ошибками две строки об этом диске отправлялись на окончательный вывод. Пока все работает нормально, используя
iostat -En | grep 'Errors: [1-9]' -A 1
но когда я пытаюсь не включать устройства CD / DVD, я врезаюсь в стену. Флаги для контекста (-A|B|C
), похоже, не работают с -v
, поэтому я не могу использовать это:
-bash-4.0$ iostat -En | grep -B 1 -vi "CD/DVD" | grep 'Errors: [1-9]' -A 1
c0t3d0 Soft Errors: 2 Hard Errors: 0 Transport Errors: 0
Vendor: TSSTcorp Product: CD/DVDW TS-L632D Revision: SR02 Serial No:
Я не думаю, что здесь должен быть какой-либо вывод, потому что строка, содержащая "CD / DVD" и строка перед ним должна быть удалена. Было бы достаточно просто написать это как скрипт на любом языке, но это должна быть одна команда, которую можно запускать на хостах без установленных дополнительных скриптов, поэтому я предполагаю, что можно использовать perl -e
. Я не знаю любой Perl, поэтому я не пробовал этот подход.
Некоторые примеры iostat -En
Вывод:
-bash-4.0$ iostat -En
c0t0d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: SEAGATE Product: ST973402SSUN72G Revision: 0603 Serial No: *removed*
Size: 73.40GB <73400057856 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 0 Predictive Failure Analysis: 0
c0t3d0 Soft Errors: 2 Hard Errors: 0 Transport Errors: 0
Vendor: TSSTcorp Product: CD/DVDW TS-L632D Revision: SR02 Serial No:
Size: 0.00GB <0 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 2 Predictive Failure Analysis: 0
c0t1d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: SEAGATE Product: ST973402SSUN72G Revision: 0603 Serial No: *removed*
Size: 73.40GB <73400057856 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 0 Predictive Failure Analysis: 0
В этом случае у меня не должно быть никакого вывода, потому что единственное устройство с ошибками - это оптический привод, и мне все равно.
c0t1d0 Soft Errors: 0 Hard Errors: 1 Transport Errors: 0
Vendor: SEAGATE Product: ST973402SSUN72G Revision: 0603 Serial No: *removed*
Это вывод, который я ищу. Есть идеи?