This repository was archived by the owner on May 14, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmured.sh
More file actions
158 lines (144 loc) · 4.67 KB
/
mured.sh
File metadata and controls
158 lines (144 loc) · 4.67 KB
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
#!/bin/bash
# mured - *buntu 16.04 (LTS) based systems.
# SwITNet Ltd © - 2018, https://switnet.net/
# GPLv3 or later.
#Check if user is root
if ! [ $(id -u) = 0 ]; then
echo "You need to be root or have sudo privileges!"
exit 1
fi
docker_num=$(grep -nc docker /proc/1/cgroup)
check_docker() {
if [ $1 = 0 ]; then
echo "Ok, this doesn't seems to be a docker container"
else
echo "This script won't work on a docker container, exiting..."
exit
fi
}
check_docker $docker_num
if [ "$(dpkg-query -W -f='${Status}' redis-server 2>/dev/null | grep -c "ok")" == "1" ]; then
echo "Redis is already installed, skipping..."
else
echo -e "\n---- Install Redis Server ----"
apt -yqq install redis-server
fi
REDIS_INST=$(find /etc/redis -name redis* | cut -d "_" -f2 | grep -v redis | sed "s|.conf||" | sort -r)
echo "Redis sufix:"
while [[ -z $RED_SUFIX ]]
do
echo "These have been already taken (avoid them):"
if [[ -z "$REDIS_INST" ]]; then
echo " -> Seems there is no other custom redis instance present."
else
echo $REDIS_INST
fi
read RED_SUFIX
if [[ ! -z $RED_SUFIX ]]; then
echo "We'll use sufix \"$RED_SUFIX\" "
else
echo "Please enter a small sufix for this redis instance."
fi
done
RED_CONF_ORIG=/etc/redis/redis.conf
RED_CONF_ADD=/etc/redis/redis_$RED_SUFIX.conf
RED_SYS_ORIG=/lib/systemd/system/redis-server.service
RED_SYS_ADD=/lib/systemd/system/redis-server_$RED_SUFIX.service
RED_PID_ORIG=/var/run/redis/redis-server.pid
RED_PID_ADD=/var/run/redis/redis-server_$RED_SUFIX.pid
RED_LOG_ORIG=/var/log/redis/redis-server.log
RED_LOG_ADD=/var/log/redis/redis-server_$RED_SUFIX.log
RED_SCK_ORIG=/var/run/redis/redis.sock
RED_SCK_ADD=/var/run/redis/redis_$RED_SUFIX.sock
RED_VAR_ORIG=/var/lib/redis
RED_VAR_ADD=/var/lib/redis_$RED_SUFIX
PORT_BASE=$(grep -n "port" $(find /etc/redis/redis*.conf) | grep -v "[0-9]:#" | awk 'NF>1{print $NF}' | sort -r | head -n 1)
sed_var_conf() {
sed -i "$1 s|.*$2.*|$2 $3|" $4
}
close_socket() {
if grep $1 $2 | grep -v "#"; then
echo "disabling unixsocket"
sed -i "s|$1|#$1|g" $2
else
echo "unixsocket is already disabled"
fi
}
echo "
What kind of connection should this redis instance use?
TCP = 1 || unixsocket = 2
"
while [[ "$RED_CON" != 1 && "$RED_CON" != 2 ]]
do
read RED_CON
if [ "$RED_CON" = "1" ]; then
echo "We'll setup \"tcp\" connection"
SET_RED=1
elif [ "$RED_CON" = "2" ]; then
echo "We'll setup \"unixsocket\" connection."
else
echo "Only \"1\" or \"2\" are valid responses."
fi
done
if [ "$RED_CON" = "1" ]; then
echo "We'll setup \"tcp\" connection"
SET_RED=1
elif [ "$RED_CON" = "2" ]; then
echo "We'll setup \"unixsocket\" connection."
fi
install -o redis -g redis -d $RED_VAR_ADD
cp -p $RED_CONF_ORIG $RED_CONF_ADD
PORT_NUM_LIN=$(grep -n "port" $RED_CONF_ADD | grep -v "[0-9]:#" | cut -d ":" -f1)
USOCK_NUM_LIN=$(grep -n "unixsocket " $RED_CONF_ADD | cut -d ":" -f1)
USOCK_PERM_LIN=$(grep -n "unixsocketperm" $RED_CONF_ADD | cut -d ":" -f1)
if [ "$PORT_BASE" = "0" ] && [ "$SET_RED" = "1" ]; then
export NEW_PORT=6379
sed_var_conf $PORT_NUM_LIN port $NEW_PORT $RED_CONF_ADD
close_socket unixsocket $RED_CONF_ADD
elif [ "$PORT_BASE" != "0" ] && [ "$SET_RED" = "1" ]; then
export NEW_PORT=$((PORT_BASE + 1))
sed_var_conf $PORT_NUM_LIN port $NEW_PORT $RED_CONF_ADD
close_socket unixsocket $RED_CONF_ADD
elif [ "$RED_CON" = "2" ]; then
echo "Configuring redis unix socket"
export NEW_PORT=0
sed -i "s|# unixsocket|\ \ unixsocket|g" $RED_CONF_ADD
sed_var_conf $PORT_NUM_LIN port $NEW_PORT $RED_CONF_ADD
sed_var_conf $USOCK_PERM_LIN unixsocketperm 770 $RED_CONF_ADD
else
echo "Invalid option"
echo "Please report to: https://github.com/switnet-ltd/mured"
exit
fi
echo "-> Setting up conf file..."
sed -i "s|$RED_PID_ORIG|$RED_PID_ADD|" $RED_CONF_ADD
sed -i "s|$RED_SCK_ORIG|$RED_SCK_ADD|" $RED_CONF_ADD
sed -i "s|$RED_LOG_ORIG|$RED_LOG_ADD|" $RED_CONF_ADD
sed -i "s|$RED_VAR_ORIG|$RED_VAR_ADD|" $RED_CONF_ADD
#sed -i "s|dump.rdb|dump$RED_SUFIX.rdb|" $RED_CONF_ADD
cp $RED_SYS_ORIG $RED_SYS_ADD
echo "-> Setting up system service"
sed -i "s|$RED_CONF_ORIG|$RED_CONF_ADD|" $RED_SYS_ADD
sed -i "s|$RED_PID_ORIG|$RED_PID_ADD|" $RED_SYS_ADD
sed -i "s|$RED_VAR_ORIG|$RED_VAR_ADD|" $RED_SYS_ADD
sed -i "s|redis.service|redis_$RED_SUFIX.service|" $RED_SYS_ADD
systemctl enable redis-server_$RED_SUFIX.service
systemctl start redis-server_$RED_SUFIX.service
echo "
New redis instance ready!
"
echo "-> This redis instance is using:"
if [ $RED_CON = 1 ]; then
echo " * Port: $NEW_PORT
* Socket: (disabled)"
elif [ $RED_CON = 2 ]; then
echo " * Port: (disabled)
* Socket: $RED_SCK_ADD"
else
echo "Invalid option"
echo "Please report to: https://github.com/switnet-ltd/mured"
exit
fi
echo "-> Check further details of new redis instance at:"
echo " $RED_CONF_ADD
$RED_LOG_ADD"