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 |
|