@cryptotaxi247 / netdata-1 / commits / a7ec7a43a

workaround about getent not being available

Costa Tsaousis (ktsaou) committed Apr 2, 2017 at 19:46 UTC a7ec7a43a51eed9c3e137a89b36f206331c21e69
1 file changed +47 -5
installer/functions.sh
+47 -5
@@ -178,10 +178,53 @@ run() {
178 return ${ret}
179 }
180
181 +getent_cmd="$(which_cmd getent)"
182 +portable_check_user_exists() {
183 + local username="${1}" found=
184 +
185 + if [ ! -z "${getent_cmd}" ]
186 + then
187 + "${getent_cmd}" passwd "${username}" >/dev/null 2>&1
188 + return $?
189 + fi
190 +
191 + found="$(cut -d ':' -f 1 </etc/passwd | grep "^${username}$")"
192 + [ "${found}" = "${username}" ] && return 0
193 + return 1
194 +}
195 +
196 +portable_check_group_exists() {
197 + local groupname="${1}" found=
198 +
199 + if [ ! -z "${getent_cmd}" ]
200 + then
201 + "${getent_cmd}" group "${groupname}" >/dev/null 2>&1
202 + return $?
203 + fi
204 +
205 + found="$(cut -d ':' -f 1 </etc/group | grep "^${groupname}$")"
206 + [ "${found}" = "${groupname}" ] && return 0
207 + return 1
208 +}
209 +
210 +portable_check_user_in_group() {
211 + local username="${1}" groupname="${2}" users=
212 +
213 + if [ ! -z "${getent_cmd}" ]
214 + then
215 + users="$(getent group "${groupname}" | cut -d ':' -f 4)"
216 + else
217 + users="$(grep "^${groupname}:" </etc/group | cut -d ':' -f 4)"
218 + fi
219 +
220 + [[ ",${users}," =~ ,${username}, ]] && return 0
221 + return 1
222 +}
223 +
224 portable_add_user() {
225 local username="${1}"
226
184 - getent passwd "${username}" > /dev/null 2>&1
227 + portable_check_user_exists "${username}"
228 [ $? -eq 0 ] && echo >&2 "User '${username}' already exists." && return 0
229
230 echo >&2 "Adding ${username} user account ..."
@@ -214,7 +257,7 @@ portable_add_user() {
257 portable_add_group() {
258 local groupname="${1}"
259
217 - getent group "${groupname}" > /dev/null 2>&1
260 + portable_check_group_exists "${groupname}"
261 [ $? -eq 0 ] && echo >&2 "Group '${groupname}' already exists." && return 0
262
263 echo >&2 "Adding ${groupname} user group ..."
@@ -244,12 +287,11 @@ portable_add_group() {
287 portable_add_user_to_group() {
288 local groupname="${1}" username="${2}"
289
247 - getent group "${groupname}" > /dev/null 2>&1
290 + portable_check_group_exists "${groupname}"
291 [ $? -ne 0 ] && echo >&2 "Group '${groupname}' does not exist." && return 1
292
293 # find the user is already in the group
251 - local users=$(getent group "${groupname}" | cut -d ':' -f 4)
252 - if [[ ",${users}," =~ ,${username}, ]]
294 + if portable_check_user_in_group "${username}" "${groupname}"
295 then
296 # username is already there
297 echo >&2 "User '${username}' is already in group '${groupname}'."