#!/bin/bash # # 08/2011 Matthias Henze # Lizenz: GPL v2 # # Check für Adaptec-Controlleer die von "arcconf" unterstützt werden # basis01:~# arcconf GETCONFIG 1 AD | grep Status # Controller Status : Optimal # Status : ZMM Optimal # basis01:~# arcconf GETCONFIG 1 AD | grep Model # Controller Model : Adaptec 6405 get_model () { MODEL=$(arcconf GETCONFIG $1 AD | grep Model | cut -d ":" -f 2) MODEL=${MODEL/ /} MODEL=${MODEL// /-} } for C in $(arcconf GETVERSION | grep "Controller #" | cut -d "#" -f 2) do get_model $C STATUS=$(arcconf GETCONFIG $C AD | grep "Controller Status" | cut -d ":" -f 2) TEXT="Controller: $C, Status: $STATUS" if [ "$STATUS" != "${STATUS/Optimal}" ]; then ST=0 else ST=2 fi arcconf GETCONFIG $C AD | grep -q "ZMM" >/dev/null if [ $? ]; then ZMM=$(arcconf GETCONFIG $C AD | grep "ZMM" | grep "Status" | cut -d ":" -f 2) TEXT="$TEXT, $ZMM" if [ "$STATUS" != "${STATUS/Optimal}" ]; then ST=$ST else ST=2 fi fi echo "$ST $MODEL - $TEXT" done #basis01:~# arcconf GETCONFIG 1 LD #Logical device number 0 # Logical device name : a1 # RAID level : 5 # Status of logical device : Optimal # Size : 5713910 MB for C in $(arcconf GETVERSION | grep "Controller #" | cut -d "#" -f 2) do get_model $C arcconf GETCONFIG $C LD | awk -v M=$MODEL -v C=$C -- ' BEGIN { N=0 } /Logical device number/ { N=N+1 LD[N,1]=$4 } /Logical device name/ { LD[N,2]=$5 } /RAID level/ { LD[N,3]=$4 } /Status of logical device/ { LD[N,4]=$6 } /Size/ { LD[N,5]=$3; LD[N,6]=$4 } END { for ( i=1; i<=N; i++ ) { if ( LD[i,4] == "Optimal" ) ST=0; else ST=2; printf("%s %s-LD-%s - Controller: %s, Logicaldrive: %s, Name: %s, RaidLevel: %s, Status: %s, Size: %s %s\n", ST,M,LD[i,1],C,LD[i,1],LD[i,2],LD[i,3],LD[i,4],LD[i,5],LD[i,6]) } }' done #basis01:~# arcconf GETCONFIG 1 PD # Device #0 # State : Online # Transfer Speed : SATA 6.0 Gb/s # Model : ST2000DL003-9VT1 # Size : 1907729 MB for C in $(arcconf GETVERSION | grep "Controller #" | cut -d "#" -f 2) do get_model $C arcconf GETCONFIG $C PD | awk -v M=$MODEL -v C=$C -- ' BEGIN { N=0 } /Device #/ { N=N+1; split($0,a,"#"); DR[N,1]=a[2] } / State / { DR[N,2]=$3 } /Transfer Speed/ { split($0,a,": "); DR[N,3]=a[2] } /Model/ { DR[N,4]=$3 } /Size/ { DR[N,5]=$3; DR[N,6]=$4 } END { for ( i=1; i<=N; i++ ) { if ( DR[i,2] == "Online" ) ST=0; else ST=2; printf("%s %s-DR-%s - Controller: %s, Drive: %s, State: %s, Speed: %s, Model: %s, Size: %s %s\n", ST,M,DR[i,1],C,DR[i,1],DR[i,2],DR[i,3],DR[i,4],DR[i,5],DR[i,6]) } } ' done