Statistiques
| Révision :

root / bin / get-disk-zpool

Historique | Voir | Annoter | Télécharger (2,29 ko)

1 1 kreverch
#!/bin/bash
2 39 ltaulell
# $Id$
3 51 ltaulell
# Copyright (C) 2013 Kevin Reverchon, Loïs Taulelle
4 51 ltaulell
# This file/program is part of gZFS free software
5 51 ltaulell
# See COPYING file for details
6 51 ltaulell
#
7 1 kreverch
8 49 kreverch
BINZFS="/sbin/zfs"
9 49 kreverch
BINZPOOL="/sbin/zpool"
10 49 kreverch
11 1 kreverch
function usage {
12 1 kreverch
13 1 kreverch
echo "Syntax $0"
14 1 kreverch
echo "Description : Get and write in a file all disk (type raidz and mirror) of a ZFS"
15 1 kreverch
16 1 kreverch
}
17 1 kreverch
18 1 kreverch
function nointeractive {
19 32 kreverch
/sbin/zdb >/tmp/.buffer_zdb
20 1 kreverch
GETDISKINFO="/sbin/get-disk-info"
21 1 kreverch
22 1 kreverch
dataType=""
23 1 kreverch
raidType=""
24 1 kreverch
raidID=""
25 1 kreverch
nparity=""
26 1 kreverch
poolname=""
27 1 kreverch
28 1 kreverch
while read line
29 1 kreverch
do
30 1 kreverch
   strLine=$(echo $line |sed -e 's/ \+//g'|sed -e "s/'//g")
31 1 kreverch
   property=$(echo $strLine |cut -d ':' -f1)
32 1 kreverch
   valueProperty=$(echo $strLine |cut -d ':' -f2)
33 1 kreverch
   if [ "$property" == "name" ]
34 1 kreverch
   then
35 1 kreverch
      echo "$property:$valueProperty"
36 49 kreverch
      echo "$($BINZPOOL status $valueProperty|grep -i "state:"|sed -e "s/^ \+//g"|sed -e "s/: /:/")"
37 49 kreverch
      echo "$($BINZPOOL status $valueProperty|grep -i "scan:"|sed -e "s/^ \+//g"|sed -e "s/: /:/")"
38 1 kreverch
      poolname="$valueProperty"
39 1 kreverch
   fi
40 1 kreverch
   if [[ "$property" =~ "children[" ]]
41 1 kreverch
   then
42 1 kreverch
       continue;
43 1 kreverch
   fi
44 1 kreverch
   if [[ "$property" == "type" ]] && [[ "$valueProperty" == "raidz" ]]
45 1 kreverch
   then
46 1 kreverch
      dataType="raidz"
47 1 kreverch
      raidType="raidz"
48 1 kreverch
   fi
49 1 kreverch
50 1 kreverch
   if [[ "$property" == "type" ]] && [[ "$valueProperty" == "mirror" ]]
51 1 kreverch
   then
52 1 kreverch
      dataType="mirror"
53 1 kreverch
      raidType="mirror"
54 1 kreverch
   fi
55 1 kreverch
56 1 kreverch
   if [[ "$dataType" == "raidz" ]] || [[ "$dataType" == "mirror" ]]
57 1 kreverch
   then
58 1 kreverch
      if [ "$property" == "id" ]
59 1 kreverch
      then
60 1 kreverch
         raidID=$valueProperty
61 1 kreverch
62 1 kreverch
      fi
63 1 kreverch
   fi
64 1 kreverch
   if [[ "$dataType" == "raidz"  ]] && [[ "$property" == "nparity" ]]
65 1 kreverch
   then
66 1 kreverch
        nparity="$valueProperty"
67 1 kreverch
   fi
68 1 kreverch
69 1 kreverch
   if [[ "$property" == "type" ]] && [[ "$valueProperty" == "disk" ]]
70 1 kreverch
   then
71 1 kreverch
      dataType="disk"
72 1 kreverch
   fi
73 1 kreverch
74 1 kreverch
   if [ "$dataType" == "disk" ]
75 1 kreverch
   then
76 1 kreverch
      if [[ "$property" == "path" ]] && [[ "$valueProperty" != "" ]]
77 1 kreverch
      then
78 1 kreverch
        echo "#infoDisk#"
79 1 kreverch
        echo "poolname:$poolname"
80 1 kreverch
        echo "raidType:$raidType"
81 1 kreverch
        echo "nparity:$nparity"
82 1 kreverch
        echo "raidID:$raidID"
83 1 kreverch
        echo "$property:$valueProperty"
84 1 kreverch
        $GETDISKINFO -d $valueProperty
85 1 kreverch
      fi
86 1 kreverch
   fi
87 1 kreverch
88 1 kreverch
89 1 kreverch
done < "/tmp/.buffer_zdb"
90 1 kreverch
echo "#infoDisk#"
91 1 kreverch
}
92 1 kreverch
93 1 kreverch
while getopts "h" OPTION
94 1 kreverch
do
95 1 kreverch
     case $OPTION in
96 1 kreverch
         h)
97 1 kreverch
             usage
98 1 kreverch
             exit 1
99 1 kreverch
             ;;
100 1 kreverch
         *)
101 1 kreverch
           usage
102 1 kreverch
           exit 1
103 1 kreverch
           ;;
104 1 kreverch
     esac
105 1 kreverch
done
106 1 kreverch
107 1 kreverch
nointeractive