forked from grabadabar/new_project
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathqualityCheck
528 lines (427 loc) · 11.5 KB
/
qualityCheck
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
function qc_introduce()
{
echo
echo "BASF Quality Checks Helper."
echo "Developed by Stoyan Gramatikov, ES EMEA ITO Delivery, Sofia, Bulgaria"
echo "Version 5.0"
return 0
}
function qc_zinternal_show_functions()
{
declare -f qc_introduce
declare -f qc_zinternal_show_functions
declare -f qc_zinternal_check_script_hosting_server
declare -f qc_zinternal_get_os_version
declare -f qc_zinternal_set_yp_services_common_systemd
declare -f qc_zinternal_set_yp_services_sles12
declare -f qc_zinternal_set_yp_services_rh7
declare -f qc_zinternal_set_yp_services_by_os
declare -f qc_set_server_yp_services
declare -f qc_check_server_ulm_map
declare -f qc_zinternal_run_netcat
declare -f qc_zinternal_check_server_nfs_connection
declare -f qc_check_server_nfs_connection_uranus
declare -f qc_check_server_nfs_connection_orainst
declare -f qc_check_server_nfs_connections
declare -f qc_add_server_to_pass
declare -f qc_join_server_to_ad
declare -f qc_join_server_to_suse_manager
declare -f qc_generate_ulm_maps
return ${?}
}
function qc_zinternal_check_script_hosting_server()
{
\hostname | awk -F '.' '{ print $1 }' | grep -iq '^platinum2$'
return ${?}
}
function qc_zinternal_get_os_version()
{
cat /etc/*release |
{
local read_line=
local os_type=''
local os_version=''
while read read_line
do
[ "${os_type}x" = "x" ] && os_type=$( echo ${read_line} | sed 's/'\''//g' | sed 's/'\"'//g' | sed 's/\s//g' | grep -i '^name=' | awk -F '=' '{ print $2 }' )
[ "${os_version}x" = "x" ] && os_version=$( echo ${read_line} | sed 's/'\''//g' | sed 's/'\"'//g' | sed 's/\s//g' | grep -i '^version=' | awk -F '=' '{ print $2 }' )
done
echo ${os_type}'#'${os_version} | awk '{ print toupper( $0 ) }'
}
return ${?}
}
function qc_zinternal_set_yp_services_common_systemd()
{
echo 'ypserver localhost' > /etc/yp.conf
echo --- Enable services
systemctl enable ypbind
systemctl enable vasd
systemctl enable vasypd
systemctl enable autofs
echo --- Stop services
systemctl stop ypbind
systemctl stop vasd
systemctl stop vasypd
systemctl stop autofs
echo --- Start services
systemctl start vasd
systemctl start vasypd
systemctl start ypbind
systemctl start autofs
echo --- Restart services
systemctl restart ypbind
systemctl restart vasd
systemctl restart vasypd
systemctl restart autofs
echo --- Services status
systemctl status ypbind
systemctl status vasd
systemctl status vasypd
systemctl status autofs
vastool configure pam
return ${?}
}
function qc_zinternal_set_yp_services_sles12()
{
echo 'basfad.basf.net' > /etc/defaultdomain
domainname $( cat /etc/defaultdomain )
qc_zinternal_set_yp_services_common_systemd
return ${?}
}
function qc_zinternal_set_yp_services_rh7()
{
if cat /etc/sysconfig/network | sed 's/#.*//g' | grep -iq 'NISDOMAIN\s*=\s*'
then
echo 'Editing /etc/sysconfig/network !'
sed -i 's/NISDOMAIN\s*=\s*.*/NISDOMAIN=BASFAD.BASF.NET/gI' /etc/sysconfig/network
else
echo 'Adding NISDOMAIN to /etc/sysconfig/network !'
echo 'NISDOMAIN=BASFAD.BASF.NET' >> /etc/sysconfig/network
fi
ypdomainname BASFAD.BASF.NET
qc_zinternal_set_yp_services_common_systemd
return ${?}
}
function qc_zinternal_set_yp_services_by_os()
{
local os_id=$( qc_zinternal_get_os_version )
echo $( hostname )' # OS ID - |'${os_id}'|'
if echo ${os_id} | grep -q 'SLES#12'
then
qc_zinternal_set_yp_services_sles12
elif echo ${os_id} | grep -q 'REDHATENTERPRISELINUXSERVER#7'
then
qc_zinternal_set_yp_services_rh7
else
echo "### Not supported version - "${os_id}
return 1
fi
return ${?}
}
function qc_set_server_yp_services()
{
if ! qc_zinternal_check_script_hosting_server
then
echo 'Please, run that function from platinum2 !'
qc_introduce
return 100
fi
if [ ${#} -eq 0 ]
then
echo "Usage : qc_set_server_yp_services servername1 [ servername2 [ servername3 ] ... ]" 1>&2
qc_introduce
return 1
fi
local x=
for x in ${*}
do
echo '### Approaching to host : '${x}
{
qc_zinternal_show_functions
echo qc_zinternal_set_yp_services_by_os
echo 'vgptool apply ; vgptool apply'
} | ssh -T ${x} /bin/bash
done
return ${?}
}
function qc_check_server_ulm_map()
{
if ! qc_zinternal_check_script_hosting_server
then
echo 'Please, run that function from platinum2 !'
qc_introduce
return 100
fi
if [ ${#} -eq 0 ]
then
echo "Usage : qc_check_server_ulm_map servername1 [ servername2 [ servername3 ] ... ]" 1>&2
qc_introduce
return 1
fi
local retv=0
local x=
for x in ${*}
do
echo -n ${x}' : '
if \ssh ulm03 '\cat /opt/ulm/var/c000d01/src/*' 2>/dev/null | awk '{ print $1 }' | grep -iq '^H-'$( echo ${x} | awk -F '.' '{ print $1 }' )'$'
then
retv=0
echo 'ULM map defined.'
else
retv=${?}
echo 'ULM map is missing.'
fi
done
return ${retv}
}
function qc_zinternal_run_netcat()
{
if [ ${#} -ne 1 ]
then
echo "Usage : qc_zinternal_run_netcat nfs_server_name" 1>&2
qc_introduce
return 1
fi
local nfs_server=${1}
local timeout_seconds=2
local cmd_nc=
if which nc &>/dev/null
then
cmd_nc=nc
elif which netcat &>/dev/null
then
cmd_nc=netcat
else
echo 'ERROR : Command "nc/netcat" is not available !' 1>&2
return 126
fi
echo -n $( hostname )' : '
if ! eval '${cmd_nc} -z -w "${timeout_seconds}" "${nfs_server}" 111 && "${cmd_nc}" -z -w "${timeout_seconds}" "${nfs_server}" 2049'
then
echo 'NFS ports connectivity problem !'
return 1
fi
echo 'NFS ports open.'
return 0
}
function qc_zinternal_check_server_nfs_connection()
{
if ! qc_zinternal_check_script_hosting_server
then
echo 'Please, run that function from platinum2 !'
qc_introduce
return 100
fi
if [ ${#} -eq 0 ] || [ ${#} -eq 1 ]
then
echo "Usage : qc_zinternal_check_server_nfs_connection nfs_server_name servername1 [ servername2 [ servername3 ] ... ]" 1>&2
qc_introduce
return 1
fi
local nfs_server=${1}
shift 1
echo '*** Checking NFS Server : '${nfs_server}
local retv=0
local x=
for x in ${*}
do
{
qc_zinternal_show_functions
echo qc_zinternal_run_netcat "${nfs_server}"
} | ssh -T ${x} /bin/bash
if [ ${?} -ne 0 ]
then
echo "ERROR : Failed to check server : "${x} 1>&2
retv=${?}
fi
done
return ${retv}
}
function qc_check_server_nfs_connection_uranus()
{
if ! qc_zinternal_check_script_hosting_server
then
echo 'Please, run that function from platinum2 !'
qc_introduce
return 100
fi
if [ ${#} -eq 0 ]
then
echo "Usage : qc_check_server_nfs_connection_uranus servername1 [ servername2 [ servername3 ] ... ]" 1>&2
qc_introduce
return 1
fi
qc_zinternal_check_server_nfs_connection naSVM120.dc.basf.net ${*}
return ${?}
}
function qc_check_server_nfs_connection_orainst()
{
if ! qc_zinternal_check_script_hosting_server
then
echo 'Please, run that function from platinum2 !'
qc_introduce
return 100
fi
if [ ${#} -eq 0 ]
then
echo "Usage : qc_check_server_nfs_connection_uranus servername1 [ servername2 [ servername3 ] ... ]" 1>&2
qc_introduce
return 1
fi
qc_zinternal_check_server_nfs_connection lxNFS03.rz-c007-j650.basf-ag.de ${*}
return ${?}
}
function qc_check_server_nfs_connections()
{
if ! qc_zinternal_check_script_hosting_server
then
echo 'Please, run that function from platinum2 !'
qc_introduce
return 100
fi
if [ ${#} -eq 0 ]
then
echo "Usage : qc_check_server_nfs_connections servername1 [ servername2 [ servername3 ] ... ]" 1>&2
qc_introduce
return 1
fi
echo '### Checking /uranus'
qc_check_server_nfs_connection_uranus ${*}
echo '### Checking /orainst'
qc_check_server_nfs_connection_orainst ${*}
return ${?}
}
function qc_add_server_to_pass()
{
if ! qc_zinternal_check_script_hosting_server
then
echo 'Please, run that function from platinum2 !'
qc_introduce
return 100
fi
if [ ${#} -eq 0 ]
then
echo "Usage : qc_add_server_to_pass servername1 [ servername2 [ servername3 ] ... ]" 1>&2
qc_introduce
return 1
fi
local x=
for x in ${*}
do
echo '### Adding host : '${x}' to PASS.'
if ssh ${x} '/bin/bash -c "[ -e ~/.ssh/authorized_keys ] && cat ~/.ssh/authorized_keys"' | grep -iq suse-mgr01
then
echo "suse-mgr01 public key is already added to ~/.ssh/authorized_keys on host "${x}
else
echo -n "Adding suse-mgr01 public key to ~/.ssh/authorized_keys on host "${x}" ... "
if ssh suse-mgr01 '/bin/bash -c "cat ~/.ssh/id_rsa.pub"' | ssh ${x} '/bin/bash -c "cat >> ~/.ssh/authorized_keys"'
then
echo "done."
else
echo
echo "Operation failed."
continue
fi
fi
{
echo "cd /infra/all/cyberarc_PASS"
echo "/infra/all/cyberarc_PASS/admin_server2PASS.sh --server "${x}" --add --linux"
} | ssh -T suse-mgr01 /bin/bash
done
return ${?}
}
function qc_join_server_to_ad()
{
if ! qc_zinternal_check_script_hosting_server
then
echo 'Please, run that function from platinum2 !'
qc_introduce
return 100
fi
if [ ${#} -eq 0 ]
then
echo "Usage : qc_join_server_to_ad servername1 [ servername2 [ servername3 ] ... ]" 1>&2
qc_introduce
return 1
fi
local x=
local i=
for x in ${*}
do
echo '### Joining host : '${x}' to AD.'
if ! ssh ${x} '/bin/bash -c "[ -x /opt/quest/bin/vastool ]"'
then
echo "### vasd not installed. Going to install it."
for i in vasclnt.rpm vasgp.rpm vasyp.rpm
do
scp -p /root/skg/rpms/vasd/${i} ${x}:/tmp/.
ssh ${x} '/bin/bash -c "rpm -i /tmp/"'${i}
ssh ${x} '/bin/bash -c "rm -f /tmp/"'${i}
done
else
echo "### vasd has already been installed."
fi
qc_set_server_yp_services ${x}
if ! cd ~/ledwind/basfad
then
echo 'ERROR : Cannot change directory to ~/ledwind/basfad !' 1>&2
continue
fi
{
echo 'cd scripts/'
echo './basfad_join2AD.sh'
} | ./push ${x}
cd -
done
return ${?}
}
function qc_join_server_to_suse_manager()
{
if ! qc_zinternal_check_script_hosting_server
then
echo 'Please, run that function from platinum2 !'
qc_introduce
return 100
fi
if [ ${#} -eq 0 ]
then
echo "Usage : qc_join_server_to_suse_manager servername1 [ servername2 [ servername3 ] ... ]" 1>&2
qc_introduce
return 1
fi
local x=
for x in ${*}
do
echo '### Joining host : '${x}' to SuSE Manager.'
ssh suse-mgr01 '/bin/bash -c "cd /infra/linux/SUSE-Manager ; ./register-to-suse-mgr01.sh -s "'"${x}"
done
return ${?}
}
function qc_generate_ulm_maps()
{
if [ ${#} -eq 0 ]
then
echo "Usage : qc_generate_ulm_maps servername1 [ servername2 [ servername3 ] ... ]" 1>&2
qc_introduce
return 1
fi
local x=
echo
for x in ${*}
do
echo 'H-'$( echo ${x} | awk -F '.' '{ print $1 }' )' ('$( host ${x} | grep 'has' | grep 'address' | awk '{ print $1 }' )',-,)'
done
echo
for x in ${*}
do
echo 'U-'$( echo ${x} | awk -F '.' '{ print $1 }' )' Ugrp-Basis1'
done
echo
return ${?}
}
######################################
# check-server lin8141765 | grep 'FAILURE: 608 Pam <sssd-shadowutils><auth> not configured for QAS.' -> vastool configure pam
# Oracle packages SuSE : zypper -n in bc binutils gcc-c++-32bit gcc-c++-4.8 gcc48-c++ gcc-32bit gcc-4.8 gcc-info-4.8 gcc-locale-4.8 gcc48-32bit gcc48 gcc48-info gcc48-locale glibc glibc-devel libaio-devel libaio1 libaio1-32bit libgfortran3 libX11-6 libX11-6-32bit libXau6 libXau6-32bit libXtst6 libXtst6-32bit libcap-ng-utils libcap-ng0 libcap-ng0-32bit libcap-progs libcap1 libcap1-32bit libcap2 libcap2-32bit libgcc_s1-32bit libgcc_s1 libpcap1 libstdc++6-32bit libstdc++6 make mksh smartmontools sysstat xdpyinfo xorg-x11-libs
######################################
yyyprefix='qc_' ; for xxx in $( cat x | grep '^\s*function' | awk '{ print $2 }' | grep '^'${yyyprefix} ); do echo declare -f ${xxx%()}; done ; unset xxx; unset yyyprefix
rm -f x