-
Notifications
You must be signed in to change notification settings - Fork 5
/
1c_term_sessions.sh
executable file
·61 lines (48 loc) · 2.1 KB
/
1c_term_sessions.sh
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
#!/bin/bash
#
# Эксплуатация 1С Предприятия 8.3: Завершение сессий через RAC
#
# (c) 2020, Алексей Ю. Федотов
#
# Email: [email protected]
#
PATH=${PATH}:$(ls -d /opt/1C/v8*/[xi]* | tail -n1)
function parse_parameters {
while [[ $1 ]] ; do
case $1 in
--server|-s) SRV_NAME=$2; shift 2;;
--port|-p) SRV_PORT=$2; shift 2;;
--list|-l) SESS_LIST=$2; shift 2;;
--all|-a) ALL_SESSION=1;;
--username|-u) ADM_USER=$2; shift 2;;
--password|-w) ADM_PASS=$2; shift 2;;
*) shift;;
esac;
done
check_parameters;
}
function check_parameters {
[[ -z ${SRV_NAME} ]] && SRV_NAME=$(hostname -s);
[[ -z ${SRV_PORT} ]] && SRV_PORT=1545;
[[ -z ${SESS_LIST} ]] && echo "ОШИБКА: Не указаны номера сессий, которые необходимо завершить!" && exit 1;
}
parse_parameters ${@};
CLSTR_UUID=$( rac cluster list ${SRV_NAME}:${SRV_PORT} | grep cluster | \
perl -pe 's/[ "]//g; s/^cluster:(.*)/\1/' )
for CURR_CLSTR in ${CLSTR_UUID}
do
ACT_SESS+=( $(rac session list --cluster ${CURR_CLSTR} ${SRV_NAME}:${SRV_PORT} | grep -B1 -Pe "session-id\s+:\s+(${SESS_LIST//,/|})" | \
perl -pe "s/^-+\n//; s/[ \"]//g; s/^session:(.*)\n/${CURR_CLSTR}:\1/; s/.*-id(:.*)/\1/") )
done
[[ $(echo ${SESS_LIST//,/ } | wc -w) -lt ${#ACT_SESS[*]} ]] && echo "ОШИБКА: количество обнаруженных сеансов превышает число заданных для завершения!" && exit 1
for CURR_SESS in ${SESS_LIST//,/ }
do
echo -n "Сеанс номер ${CURR_SESS}: "
SESS_UUID=$(echo ${ACT_SESS[*]} | grep -Pe "([\w\d\-]+):${CURR_SESS}\b" | perl -pe "s/.*(\s|^)([\w\d\-]+:[\w\d\-]+):${CURR_SESS}\b.*/\2/")
if [[ -z ${SESS_UUID} ]]; then
echo "не найден!"
else
rac session terminate --cluster ${SESS_UUID%:*} --session ${SESS_UUID#*:} ${SRV_NAME}:${SRV_PORT} && \
echo "успешно завершен!" || echo "завершить не удалось!"
fi
done