Statistiques
| Révision :

root / bin / del-iscsi-volume

Historique | Voir | Annoter | Télécharger (7,46 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 1 kreverch
function usage {
9 1 kreverch
  echo "Usage :" 1>&2
10 1 kreverch
  echo "$0 [OPTIONS]" 1>&2
11 1 kreverch
  echo " -h display this message" 1>&2
12 1 kreverch
  echo " -i interactive mode" 1>&2
13 1 kreverch
  echo " -T Specify the TID" 1>&2
14 1 kreverch
15 1 kreverch
}
16 1 kreverch
17 1 kreverch
function nointeractive {
18 1 kreverch
if [ "$TID2DEL" == "" ]
19 1 kreverch
then
20 1 kreverch
   echo "Please specify a TID ISCSI" 1>&2
21 1 kreverch
   exit 1
22 1 kreverch
fi
23 1 kreverch
TARGET=$(cat /proc/net/iet/session |grep -i tid:$TID2DEL |cut -d ":" -f3)
24 1 kreverch
25 1 kreverch
TID_FIND=1
26 1 kreverch
TID_ISACTIVE=1
27 1 kreverch
for line in $(cat /proc/net/iet/session)
28 1 kreverch
do
29 1 kreverch
  if [ $TID_FIND -eq 0 ]
30 1 kreverch
  then
31 1 kreverch
     CHECK_STATE=$(echo $line |awk '{ if ( /state:active/ ){ print 0 }else{ print $1 $line} }')
32 1 kreverch
     if [ "$CHECK_STATE" = "0" ]
33 1 kreverch
     then
34 1 kreverch
         TID_ISACTIVE=0
35 1 kreverch
     fi
36 1 kreverch
37 1 kreverch
  fi
38 1 kreverch
  if [ $TID_ISACTIVE -eq 0 ]
39 1 kreverch
  then
40 40 ltaulell
     echo "iscsi volume in use, please disconnect all clients first " 1>&2
41 1 kreverch
     exit 1
42 1 kreverch
  fi
43 1 kreverch
  TID_LISTED=$(echo $line |awk '(/tid:/) { print $1 }')
44 1 kreverch
  if [ "$TID_LISTED" != "" ]
45 1 kreverch
  then
46 1 kreverch
     if [ "tid:$TID2DEL" = "$TID_LISTED" ]
47 1 kreverch
     then
48 1 kreverch
        TID_FIND=0
49 1 kreverch
     else
50 1 kreverch
       TID_FIND=1
51 1 kreverch
     fi
52 1 kreverch
 fi
53 1 kreverch
done
54 1 kreverch
55 1 kreverch
ietadm --op delete --tid=$TID2DEL
56 1 kreverch
if [ $? -eq 0 ]
57 1 kreverch
then
58 40 ltaulell
#   echo "*** La suppression via la commande ietadm s'est termine correctement"
59 40 ltaulell
   echo "*** Removal, via ietadm command, ended correctly "
60 1 kreverch
   echo ""
61 40 ltaulell
#   echo "*** Vérification et suppression du volume dans le fichier /etc/iet/ietd.conf ..."
62 40 ltaulell
   echo "*** Checking and removal of volume's entry in /etc/iet/ietd.conf... "
63 1 kreverch
64 1 kreverch
   COPY_LINE=0
65 1 kreverch
   >/tmp/.buffer_ietd.conf
66 1 kreverch
   while read line
67 1 kreverch
   do
68 1 kreverch
      echo $line |grep -i "^Target"
69 1 kreverch
      if [ $? -eq 0 ]
70 1 kreverch
      then
71 1 kreverch
         COPY_LINE=0
72 1 kreverch
      fi
73 1 kreverch
      echo $line |grep -i "^Target $TARGET"
74 1 kreverch
      if [ $? -eq 0 ]
75 1 kreverch
      then
76 1 kreverch
         COPY_LINE=1
77 1 kreverch
      fi
78 1 kreverch
      if [ $COPY_LINE -eq 0 ]
79 1 kreverch
      then
80 1 kreverch
         echo $line >> /tmp/.buffer_ietd.conf
81 1 kreverch
      fi
82 1 kreverch
83 1 kreverch
    done < "/etc/iet/ietd.conf"
84 40 ltaulell
#    echo "*** Sauvegarde du fichier /etc/iet/ietd.conf ..."
85 40 ltaulell
    echo "*** Backup of file /etc/iet/ietd.conf... "
86 1 kreverch
    TODAY=$(date +%Y%m%d%H%M%S)
87 1 kreverch
    cp /etc/iet/ietd.conf /etc/iet/ietd.conf.$TODAY
88 1 kreverch
    cp /tmp/.buffer_ietd.conf /etc/iet/ietd.conf
89 1 kreverch
90 1 kreverch
91 1 kreverch
   echo ""
92 40 ltaulell
#   echo "*** Vérification /proc/net/iet/volume :"
93 40 ltaulell
   echo "*** Checking /proc/net/iet/volumes: "
94 1 kreverch
   cat /proc/net/iet/volume
95 1 kreverch
96 1 kreverch
   echo ""
97 40 ltaulell
#   echo "*** Verification repertoire /etc/iet :"
98 40 ltaulell
   echo "*** Checking /etc/iet directory: "
99 1 kreverch
   ls -ltr /etc/iet
100 1 kreverch
101 1 kreverch
   echo ""
102 40 ltaulell
#   echo "*** Operation de suppression [OK] ..."
103 40 ltaulell
   echo "*** Removal operation [OK] "
104 1 kreverch
else
105 1 kreverch
106 40 ltaulell
#   echo "*** Un probleme est survenu lors de la tentative de suppression du volume iscsi TID:$TID2DEL"
107 40 ltaulell
#   echo "*** Veuillez vérifier que le volume n'est pas en cours d'utilisation (cat /proc/net/iet/session) sinon contacter l'admin en charge de ce service"
108 40 ltaulell
   echo "*** A problem occurred while trying to delete iscsi volume TID:$TID2DEL"
109 40 ltaulell
   echo "*** Please verify that this volume is not in use (cat /proc/net/iet/session) otherwise contact the BOFH in charge"
110 1 kreverch
fi
111 1 kreverch
112 1 kreverch
113 1 kreverch
}
114 1 kreverch
115 1 kreverch
116 1 kreverch
function interactive {
117 1 kreverch
118 40 ltaulell
#echo "*** Choix du volume ISCSI a supprimer ***"
119 40 ltaulell
echo "*** ISCSI volume to delete: ***"
120 1 kreverch
cat /proc/net/iet/session
121 1 kreverch
122 40 ltaulell
#echo "*** Saisir le TID du volume iscsi a supprimer : ***"
123 40 ltaulell
echo "*** Please enter TID from iscsi volume to delete: ***"
124 1 kreverch
while read inputline
125 1 kreverch
do
126 1 kreverch
   TID2DEL=$inputline
127 40 ltaulell
#   echo "*** Etes-vous sur du nom : $inputline ? (y/n) ***"
128 40 ltaulell
   echo "*** Are you sure: $inputline ? (y/n) ***"
129 1 kreverch
130 1 kreverch
   while read inputConfirm
131 1 kreverch
   do
132 1 kreverch
      if [ "$inputConfirm" = "y" ]||[ "$inputConfirm" = "n" ]
133 1 kreverch
      then
134 1 kreverch
         break
135 1 kreverch
      fi
136 40 ltaulell
#      echo "*** Etes-vous certain de vouloir supprimer le TID : $inputline ? (y/n) ***"
137 40 ltaulell
      echo "*** Are you sure to delete this TID: $inputline ? (y/n) ***"
138 1 kreverch
   done
139 1 kreverch
140 1 kreverch
   if [ "$inputConfirm" = "y" ]
141 1 kreverch
   then
142 1 kreverch
      break
143 1 kreverch
   fi
144 1 kreverch
   if [ "$inputConfirm" != "y" ]
145 1 kreverch
   then
146 40 ltaulell
#      echo "*** Saisir le TID du volume iscsi a supprimer : ***"
147 40 ltaulell
      echo "*** Please enter TID from iscsi volume to delete: ***"
148 1 kreverch
   fi
149 1 kreverch
done
150 1 kreverch
151 40 ltaulell
#echo "**** Recuperation de la propriété Target (identifiant utilise dans le fichier /etc/iet/ietd.conf) ..."
152 40 ltaulell
echo "**** Retrieval of Target property (id used in /etc/iet/ietd.conf)... "
153 1 kreverch
TARGET=$(cat /proc/net/iet/session |grep -i tid:$TID2DEL |cut -d ":" -f3)
154 1 kreverch
155 40 ltaulell
#echo "Nom de la target a rechercher dans /etc/iet/ietd.conf : $TARGET"
156 40 ltaulell
echo "Target name to search in /etc/iet/ietd.conf: $TARGET"
157 1 kreverch
158 1 kreverch
echo ""
159 40 ltaulell
#echo "**** Check si le volume est en cours d'utilisation ..."
160 40 ltaulell
echo "**** Checking if volume is in use... "
161 1 kreverch
162 1 kreverch
163 1 kreverch
TID_FIND=1
164 1 kreverch
TID_ISACTIVE=1
165 1 kreverch
for line in $(cat /proc/net/iet/session)
166 1 kreverch
do
167 1 kreverch
  if [ $TID_FIND -eq 0 ]
168 1 kreverch
  then
169 1 kreverch
     CHECK_STATE=$(echo $line |awk '{ if ( /state:active/ ){ print 0 }else{ print $1 $line} }')
170 1 kreverch
     if [ "$CHECK_STATE" = "0" ]
171 1 kreverch
     then
172 1 kreverch
         TID_ISACTIVE=0
173 1 kreverch
     fi
174 1 kreverch
175 1 kreverch
  fi
176 1 kreverch
  if [ $TID_ISACTIVE -eq 0 ]
177 1 kreverch
  then
178 40 ltaulell
#     echo "Le volume isci est en cours d'utilisation, suppression impossible"
179 40 ltaulell
     echo "ISCSI Volume is in use, cannot delete."
180 1 kreverch
     exit 1
181 1 kreverch
  fi
182 1 kreverch
  TID_LISTED=$(echo $line |awk '(/tid:/) { print $1 }')
183 1 kreverch
  if [ "$TID_LISTED" != "" ]
184 1 kreverch
  then
185 1 kreverch
     if [ "tid:$TID2DEL" = "$TID_LISTED" ]
186 1 kreverch
     then
187 1 kreverch
        TID_FIND=0
188 1 kreverch
     else
189 1 kreverch
       TID_FIND=1
190 1 kreverch
     fi
191 1 kreverch
 fi
192 1 kreverch
done
193 1 kreverch
194 40 ltaulell
#echo "*** Debut de la procédure de suppression ..."
195 40 ltaulell
echo "*** Beginning delete procedure... "
196 1 kreverch
echo ""
197 1 kreverch
198 1 kreverch
ietadm --op delete --tid=$TID2DEL
199 1 kreverch
if [ $? -eq 0 ]
200 1 kreverch
then
201 40 ltaulell
#   echo "*** La suppression via la commande ietadm s'est termine correctement"
202 40 ltaulell
   echo "*** Removal, via ietadm command, ended correctly "
203 1 kreverch
   echo ""
204 40 ltaulell
#   echo "*** Vérification et suppression du volume dans le fichier /etc/iet/ietd.conf ..."
205 40 ltaulell
   echo "*** Checking and removal of volume's entry in /etc/iet/ietd.conf... "
206 1 kreverch
207 1 kreverch
   COPY_LINE=0
208 1 kreverch
   >/tmp/.buffer_ietd.conf
209 1 kreverch
   while read line
210 1 kreverch
   do
211 1 kreverch
      echo $line |grep -i "^Target"
212 1 kreverch
      if [ $? -eq 0 ]
213 1 kreverch
      then
214 1 kreverch
         COPY_LINE=0
215 1 kreverch
      fi
216 1 kreverch
      echo $line |grep -i "^Target $TARGET"
217 1 kreverch
      if [ $? -eq 0 ]
218 1 kreverch
      then
219 1 kreverch
         COPY_LINE=1
220 1 kreverch
      fi
221 1 kreverch
      if [ $COPY_LINE -eq 0 ]
222 1 kreverch
      then
223 1 kreverch
         echo $line >> /tmp/.buffer_ietd.conf
224 1 kreverch
      fi
225 1 kreverch
226 1 kreverch
    done < "/etc/iet/ietd.conf"
227 40 ltaulell
#    echo "*** Sauvegarde du fichier /etc/iet/ietd.conf ..."
228 40 ltaulell
    echo "*** Backup of file /etc/iet/ietd.conf... "
229 1 kreverch
    TODAY=$(date +%Y%m%d%H%M%S)
230 1 kreverch
    cp /etc/iet/ietd.conf /etc/iet/ietd.conf.$TODAY
231 1 kreverch
    cp /tmp/.buffer_ietd.conf /etc/iet/ietd.conf
232 1 kreverch
233 1 kreverch
234 1 kreverch
   echo ""
235 40 ltaulell
#   echo "*** Vérification /proc/net/iet/volume :"
236 40 ltaulell
   echo "*** Checking /proc/net/iet/volumes: "
237 1 kreverch
   cat /proc/net/iet/volume
238 1 kreverch
239 1 kreverch
   echo ""
240 40 ltaulell
#   echo "*** Verification repertoire /etc/iet :"
241 40 ltaulell
   echo "*** Checking /etc/iet directory: "
242 1 kreverch
   ls -ltr /etc/iet
243 1 kreverch
244 1 kreverch
   echo ""
245 40 ltaulell
#   echo "*** Operation de suppression [OK] ..."
246 40 ltaulell
   echo "*** Removal operation [OK] "
247 1 kreverch
else
248 1 kreverch
249 40 ltaulell
#   echo "*** Un probleme est survenu lors de la tentive de suppresion du volume iscsi TID:$TID2DEL"
250 40 ltaulell
#   echo "*** Veuillez vérifier que le volume n'est pas en cours d'uilisation (cat /proc/net/iet/session) sinon contacter l'admin en charge de ce service"
251 40 ltaulell
   echo "*** A problem occurred while trying to delete iscsi volume TID:$TID2DEL"
252 40 ltaulell
   echo "*** Please verify that this volume is not in use (cat /proc/net/iet/session) otherwise contact the BOFH in charge"
253 1 kreverch
fi
254 40 ltaulell
echo "*** END ***"
255 1 kreverch
}
256 1 kreverch
257 1 kreverch
while getopts "iT:h" OPTION
258 1 kreverch
do
259 1 kreverch
     case $OPTION in
260 1 kreverch
         h)
261 1 kreverch
             usage
262 1 kreverch
             exit 1
263 1 kreverch
             ;;
264 1 kreverch
         i)
265 1 kreverch
             interactive
266 1 kreverch
             ;;
267 1 kreverch
         T)
268 1 kreverch
             TID2DEL=$OPTARG
269 1 kreverch
             ;;
270 1 kreverch
         *)
271 1 kreverch
             usage
272 1 kreverch
             exit 1
273 1 kreverch
             ;;
274 1 kreverch
     esac
275 1 kreverch
done
276 1 kreverch
277 1 kreverch
if [ ! -d "/proc/net/iet" ]
278 1 kreverch
then
279 1 kreverch
  echo "Please, check if ietd is running ..." 1>&2
280 1 kreverch
  exit 1
281 1 kreverch
fi
282 1 kreverch
if [ -z $TID2DEL ]
283 1 kreverch
then
284 1 kreverch
   usage
285 1 kreverch
   exit 1
286 1 kreverch
fi
287 1 kreverch
nointeractive