blob: cf7019251b725cfbc3c23a105a598cc349cf562c (
plain)
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
|
#!/bin/bash
#/**
#@file ogfunctions.sh
#@brief Generic functions for OpenGnsys Server and OpenGnsys Repository.
#@version 1.1.1 - Initial version
#@author Ramón M. Gómez, ETSII Universidad de Sevilla
#@date 2017-10-08
#*/
# Showing an error message.
function raiseError() {
[ "$PROG" ] || PROG="$(basename "$0")"
case "$1" in
usage)
echo "$PROG: Usage error: Type \"$PROG help\"" >&2
exit 1 ;;
notfound)
echo "$PROG: Resource not found: $2" >&2
exit 2 ;;
access)
echo "$PROG: Access error: $2" >&2
exit 3 ;;
download)
echo "$PROG: Download error: $2" >&2
exit 4 ;;
cancel)
echo "$PROG: Operation cancelled: $2" >&2
exit 5 ;;
*)
echo "$PROG: Unknown error" >&2
exit 1 ;;
esac
}
# Showing help message.
function help() {
[ -n "$1" ] && DESCRIPTION="$1" || DESCRIPTION=$(grep "^#@brief" "$0" | cut -f2- -d" ")
shift
if [ -n "$1" ]; then
USAGE="$1"
shift
else
USAGE=$(grep "^#@usage" "$0" | cut -f2- -d" ")
[ -n "$USAGE" ] && PARAMS=$(awk '$1=="#@param" {sub($1,""); print "\t",$0}' "$0")
fi
[ "$PROG" ] || PROG="$(basename "$0")"
# Showing help.
echo "$PROG: ${DESCRIPTION:-"no description"}"
echo "Usage: ${USAGE:-"no usage info"}"
[ -n "$PARAMS" ] && echo -e "$PARAMS"
if [ -n "$*" ]; then
echo "Examples:"
while (( "$#" )); do
echo -e "\t$1"
shift
done
fi
exit 0
}
# Showing script version number.
function version() {
awk '/^#@version/ {v=$2} END {if (v) print v}' "$0"
exit 0
}
# Functions to manage a service.
function restart() {
_service restart "$1"
}
function start() {
_service start "$1"
}
function stop() {
_service stop "$1"
}
# Execute database operation.
function dbexec () {
MYCNF=$(mktemp)
trap "rm -f $MYCNF" 0 1 2 3 6 9 15
touch $MYCNF
chmod 600 $MYCNF
cat << EOT > $MYCNF
[client]
user=$USUARIO
password=$PASSWORD
EOT
mysql --defaults-extra-file="$MYCNF" -D "$CATALOG" -s -N -e "$1" || \
raiseError access "Cannot access the databse"
rm -f "$MYCNF"
}
# Returns parent process name (program or script)
function getcaller () {
basename "$(COLUMNS=200 ps hp $PPID -o args | \
awk '{if ($1~/bash/ && $2!="") { print $2; }
else { sub(/^-/,"",$1); print $1; } }')"
}
### Meta-functions and private functions.
# Metafunction to check if JSON result exists.
JQ=$(which jq 2>/dev/null) || raiseError notfound "Need to install \"jq\"."
function jq() {
local OUTPUT
OUTPUT=$($JQ "$@") || return $?
[[ "$OUTPUT" = "null" ]] && return 1
echo "$OUTPUT"
}
function source_json_config() {
FILE=$1
export ServidorAdm=$(jq -r ".rest.ip" $FILE)
export PUERTO=$(jq -r ".rest.port" $FILE)
export APITOKEN=$(jq -r ".rest.api_token" $FILE)
export USUARIO=$(jq -r ".database.user" $FILE)
export PASSWORD=$(jq -r ".database.pass" $FILE)
export datasource=$(jq -r ".database.ip" $FILE)
export CATALOG=$(jq -r ".database.name" $FILE)
export INTERFACE=$(jq -r ".wol.interface" $FILE)
}
# Private function to acts on a service (do not use directly).
function _service() {
local ACTION="$1"
local SERVICE="$2"
if which systemctl 2>/dev/null; then
systemctl "$ACTION" "$SERVICE"
elif which service 2>/dev/null; then
service "$SERVICE" "$ACTION"
elif [ -x /etc/init.d/"$SERVICE" ]; then
/etc/init.d/"$SERVICE" "$ACTION"
else
raiseError notfound "Service $SERVICE"
fi
}
|