Statistiques
| Révision :

root / bin / del-iscsi-volume @ 40

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

1
#!/bin/bash
2
# $Id: del-iscsi-volume 40 2013-10-08 14:37:55Z ltaulell $
3

    
4

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

    
12
}
13

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

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

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

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

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

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

    
87

    
88
   echo ""
89
#   echo "*** Vérification /proc/net/iet/volume :"
90
   echo "*** Checking /proc/net/iet/volumes: "
91
   cat /proc/net/iet/volume
92

    
93
   echo ""
94
#   echo "*** Verification repertoire /etc/iet :"
95
   echo "*** Checking /etc/iet directory: "
96
   ls -ltr /etc/iet
97

    
98
   echo ""
99
#   echo "*** Operation de suppression [OK] ..."
100
   echo "*** Removal operation [OK] "
101
else
102

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

    
109

    
110
}
111

    
112

    
113
function interactive {
114

    
115
#echo "*** Choix du volume ISCSI a supprimer ***"
116
echo "*** ISCSI volume to delete: ***"
117
cat /proc/net/iet/session
118

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

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

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

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

    
155
echo ""
156
#echo "**** Check si le volume est en cours d'utilisation ..."
157
echo "**** Checking if volume is in use... "
158

    
159

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

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

    
191
#echo "*** Debut de la procédure de suppression ..."
192
echo "*** Beginning delete procedure... "
193
echo ""
194

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

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

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

    
231
   echo ""
232
#   echo "*** Vérification /proc/net/iet/volume :"
233
   echo "*** Checking /proc/net/iet/volumes: "
234
   cat /proc/net/iet/volume
235

    
236
   echo ""
237
#   echo "*** Verification repertoire /etc/iet :"
238
   echo "*** Checking /etc/iet directory: "
239
   ls -ltr /etc/iet
240

    
241
   echo ""
242
#   echo "*** Operation de suppression [OK] ..."
243
   echo "*** Removal operation [OK] "
244
else
245

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

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

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