je dois analyser la sortie de iostat -En
sur une machine Solaris telle que lorsqu'un disque avec des erreurs se trouve, deux lignes sur ce disque sont envoyés à la finale sortie. Cela fonctionne très bien jusqu'à présent en utilisantgrep -v et -B | -A | C ne travaillent pas ensemble
iostat -En | grep 'Errors: [1-9]' -A 1
mais lorsque j'essaie de ne pas inclure de périphériques CD/DVD, je heurte un mur. Les drapeaux contaxt (-A|B|C
) ne semblent pas travailler avec -v
donc je ne peux pas utiliser ceci:
-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:
Je ne pense pas qu'il devrait y avoir une sortie parce que la ligne contenant « CD/DVD » et la ligne avant qu'il devrait être retiré. Il serait assez simple d'écrire cela comme un script dans toutes les langues, mais il doit être une seule commande qui peut être exécuté sur les hôtes sans scripts supplémentaires installés, donc je suppose que perl -e
peut être utilisé. Je ne sais pas tout perl donc je n'ai pas essayé cette approche.
Quelques exemples iostat -En
sortie:
-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
Dans ce cas, je ne devrais pas avoir une sortie, car le seul appareil avec des erreurs est un lecteur optique et je ne me soucie pas de ceux-ci.
c0t1d0 Soft Errors: 0 Hard Errors: 1 Transport Errors: 0
Vendor: SEAGATE Product: ST973402SSUN72G Revision: 0603 Serial No: *removed*
Ceci est la sortie que je recherche. Des idées?
Votre solution a travaillé avec un petit problème; il ne comprend pas la première ligne (c0t0d0 Erreurs Soft ...) qui était une petite correction - je viens de changer 'ligne d'impression}' 'à {print; ligne d'impression}} ' – Puddingfox