Statistiques
| Révision :

root / bin / del-iscsi-volume @ 64

Historique | Voir | Annoter | Télécharger (7,46 ko)

1
#!/bin/bash
2
# $Id: del-iscsi-volume 51 2013-10-10 11:20:37Z ltaulell $
3
# Copyright (C) 2013 Kevin Reverchon, Loïs Taulelle
4
# This file/program is part of gZFS free software
5
# See COPYING file for details
6
#
7

    
8
function usage {
9
  echo "Usage :" 1>&2
10
  echo "$0 [OPTIONS]" 1>&2
11
  echo " -h display this message" 1>&2
12
  echo " -i interactive mode" 1>&2
13
  echo " -T Specify the TID" 1>&2
14

    
15
}
16

    
17
function nointeractive {
18
if [ "$TID2DEL" == "" ]
19
then
20
   echo "Please specify a TID ISCSI" 1>&2
21
   exit 1
22
fi
23
TARGET=$(cat /proc/net/iet/session |grep -i tid:$TID2DEL |cut -d ":" -f3)
24

    
25
TID_FIND=1
26
TID_ISACTIVE=1
27
for line in $(cat /proc/net/iet/session)
28
do
29
  if [ $TID_FIND -eq 0 ]
30
  then
31
     CHECK_STATE=$(echo $line |awk '{ if ( /state:active/ ){ print 0 }else{ print $1 $line} }')
32
     if [ "$CHECK_STATE" = "0" ]
33
     then
34
         TID_ISACTIVE=0
35
     fi
36

    
37
  fi
38
  if [ $TID_ISACTIVE -eq 0 ]
39
  then
40
     echo "iscsi volume in use, please disconnect all clients first " 1>&2
41
     exit 1
42
  fi
43
  TID_LISTED=$(echo $line |awk '(/tid:/) { print $1 }')
44
  if [ "$TID_LISTED" != "" ]
45
  then
46
     if [ "tid:$TID2DEL" = "$TID_LISTED" ]
47
     then
48
        TID_FIND=0
49
     else
50
       TID_FIND=1
51
     fi
52
 fi
53
done
54

    
55
ietadm --op delete --tid=$TID2DEL
56
if [ $? -eq 0 ]
57
then
58
#   echo "*** La suppression via la commande ietadm s'est termine correctement"
59
   echo "*** Removal, via ietadm command, ended correctly "
60
   echo ""
61
#   echo "*** Vérification et suppression du volume dans le fichier /etc/iet/ietd.conf ..."
62
   echo "*** Checking and removal of volume's entry in /etc/iet/ietd.conf... "
63

    
64
   COPY_LINE=0
65
   >/tmp/.buffer_ietd.conf
66
   while read line
67
   do
68
      echo $line |grep -i "^Target"
69
      if [ $? -eq 0 ]
70
      then
71
         COPY_LINE=0
72
      fi
73
      echo $line |grep -i "^Target $TARGET"
74
      if [ $? -eq 0 ]
75
      then
76
         COPY_LINE=1
77
      fi
78
      if [ $COPY_LINE -eq 0 ]
79
      then
80
         echo $line >> /tmp/.buffer_ietd.conf
81
      fi
82

    
83
    done < "/etc/iet/ietd.conf"
84
#    echo "*** Sauvegarde du fichier /etc/iet/ietd.conf ..."
85
    echo "*** Backup of file /etc/iet/ietd.conf... "
86
    TODAY=$(date +%Y%m%d%H%M%S)
87
    cp /etc/iet/ietd.conf /etc/iet/ietd.conf.$TODAY
88
    cp /tmp/.buffer_ietd.conf /etc/iet/ietd.conf
89

    
90

    
91
   echo ""
92
#   echo "*** Vérification /proc/net/iet/volume :"
93
   echo "*** Checking /proc/net/iet/volumes: "
94
   cat /proc/net/iet/volume
95

    
96
   echo ""
97
#   echo "*** Verification repertoire /etc/iet :"
98
   echo "*** Checking /etc/iet directory: "
99
   ls -ltr /etc/iet
100

    
101
   echo ""
102
#   echo "*** Operation de suppression [OK] ..."
103
   echo "*** Removal operation [OK] "
104
else
105

    
106
#   echo "*** Un probleme est survenu lors de la tentative de suppression du volume iscsi TID:$TID2DEL"
107
#   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
   echo "*** A problem occurred while trying to delete iscsi volume TID:$TID2DEL"
109
   echo "*** Please verify that this volume is not in use (cat /proc/net/iet/session) otherwise contact the BOFH in charge"
110
fi
111

    
112

    
113
}
114

    
115

    
116
function interactive {
117

    
118
#echo "*** Choix du volume ISCSI a supprimer ***"
119
echo "*** ISCSI volume to delete: ***"
120
cat /proc/net/iet/session
121

    
122
#echo "*** Saisir le TID du volume iscsi a supprimer : ***" 
123
echo "*** Please enter TID from iscsi volume to delete: ***"
124
while read inputline
125
do
126
   TID2DEL=$inputline 
127
#   echo "*** Etes-vous sur du nom : $inputline ? (y/n) ***"
128
   echo "*** Are you sure: $inputline ? (y/n) ***"
129
   
130
   while read inputConfirm
131
   do
132
      if [ "$inputConfirm" = "y" ]||[ "$inputConfirm" = "n" ]
133
      then
134
         break
135
      fi
136
#      echo "*** Etes-vous certain de vouloir supprimer le TID : $inputline ? (y/n) ***" 
137
      echo "*** Are you sure to delete this TID: $inputline ? (y/n) ***"
138
   done
139

    
140
   if [ "$inputConfirm" = "y" ]
141
   then
142
      break
143
   fi
144
   if [ "$inputConfirm" != "y" ]
145
   then
146
#      echo "*** Saisir le TID du volume iscsi a supprimer : ***" 
147
      echo "*** Please enter TID from iscsi volume to delete: ***"
148
   fi
149
done
150

    
151
#echo "**** Recuperation de la propriété Target (identifiant utilise dans le fichier /etc/iet/ietd.conf) ..."
152
echo "**** Retrieval of Target property (id used in /etc/iet/ietd.conf)... "
153
TARGET=$(cat /proc/net/iet/session |grep -i tid:$TID2DEL |cut -d ":" -f3)
154

    
155
#echo "Nom de la target a rechercher dans /etc/iet/ietd.conf : $TARGET"
156
echo "Target name to search in /etc/iet/ietd.conf: $TARGET"
157

    
158
echo ""
159
#echo "**** Check si le volume est en cours d'utilisation ..."
160
echo "**** Checking if volume is in use... "
161

    
162

    
163
TID_FIND=1
164
TID_ISACTIVE=1
165
for line in $(cat /proc/net/iet/session)
166
do
167
  if [ $TID_FIND -eq 0 ]
168
  then
169
     CHECK_STATE=$(echo $line |awk '{ if ( /state:active/ ){ print 0 }else{ print $1 $line} }')
170
     if [ "$CHECK_STATE" = "0" ]
171
     then
172
         TID_ISACTIVE=0
173
     fi
174

    
175
  fi
176
  if [ $TID_ISACTIVE -eq 0 ]
177
  then
178
#     echo "Le volume isci est en cours d'utilisation, suppression impossible"
179
     echo "ISCSI Volume is in use, cannot delete."
180
     exit 1
181
  fi
182
  TID_LISTED=$(echo $line |awk '(/tid:/) { print $1 }')
183
  if [ "$TID_LISTED" != "" ]
184
  then
185
     if [ "tid:$TID2DEL" = "$TID_LISTED" ]
186
     then
187
        TID_FIND=0 
188
     else
189
       TID_FIND=1 
190
     fi
191
 fi
192
done
193

    
194
#echo "*** Debut de la procédure de suppression ..."
195
echo "*** Beginning delete procedure... "
196
echo ""
197

    
198
ietadm --op delete --tid=$TID2DEL
199
if [ $? -eq 0 ]
200
then
201
#   echo "*** La suppression via la commande ietadm s'est termine correctement"
202
   echo "*** Removal, via ietadm command, ended correctly "
203
   echo ""
204
#   echo "*** Vérification et suppression du volume dans le fichier /etc/iet/ietd.conf ..."
205
   echo "*** Checking and removal of volume's entry in /etc/iet/ietd.conf... "
206

    
207
   COPY_LINE=0
208
   >/tmp/.buffer_ietd.conf
209
   while read line
210
   do
211
      echo $line |grep -i "^Target"
212
      if [ $? -eq 0 ]
213
      then
214
         COPY_LINE=0
215
      fi
216
      echo $line |grep -i "^Target $TARGET" 
217
      if [ $? -eq 0 ]
218
      then
219
         COPY_LINE=1
220
      fi
221
      if [ $COPY_LINE -eq 0 ]
222
      then
223
         echo $line >> /tmp/.buffer_ietd.conf
224
      fi 
225

    
226
    done < "/etc/iet/ietd.conf"
227
#    echo "*** Sauvegarde du fichier /etc/iet/ietd.conf ..."
228
    echo "*** Backup of file /etc/iet/ietd.conf... "
229
    TODAY=$(date +%Y%m%d%H%M%S)
230
    cp /etc/iet/ietd.conf /etc/iet/ietd.conf.$TODAY
231
    cp /tmp/.buffer_ietd.conf /etc/iet/ietd.conf
232
       
233

    
234
   echo ""
235
#   echo "*** Vérification /proc/net/iet/volume :"
236
   echo "*** Checking /proc/net/iet/volumes: "
237
   cat /proc/net/iet/volume
238

    
239
   echo ""
240
#   echo "*** Verification repertoire /etc/iet :"
241
   echo "*** Checking /etc/iet directory: "
242
   ls -ltr /etc/iet
243

    
244
   echo ""
245
#   echo "*** Operation de suppression [OK] ..."
246
   echo "*** Removal operation [OK] "
247
else
248

    
249
#   echo "*** Un probleme est survenu lors de la tentive de suppresion du volume iscsi TID:$TID2DEL"
250
#   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
   echo "*** A problem occurred while trying to delete iscsi volume TID:$TID2DEL"
252
   echo "*** Please verify that this volume is not in use (cat /proc/net/iet/session) otherwise contact the BOFH in charge"
253
fi
254
echo "*** END ***"
255
}
256

    
257
while getopts "iT:h" OPTION
258
do
259
     case $OPTION in
260
         h)
261
             usage
262
             exit 1
263
             ;;
264
         i)
265
             interactive
266
             ;;
267
         T)
268
             TID2DEL=$OPTARG
269
             ;;
270
         *)
271
             usage
272
             exit 1
273
             ;;
274
     esac
275
done
276

    
277
if [ ! -d "/proc/net/iet" ]
278
then
279
  echo "Please, check if ietd is running ..." 1>&2
280
  exit 1
281
fi
282
if [ -z $TID2DEL ]
283
then
284
   usage
285
   exit 1
286
fi
287
nointeractive
288