From 2d751443a429b19443cb4499cce2f1526c28c1a0 Mon Sep 17 00:00:00 2001 From: Dennis Camera Date: Tue, 1 Oct 2019 08:08:35 +0200 Subject: [PATCH] [__user] Fall back to /etc files if getent(1) is not available On systems without getent(1) the script would fail because "command -v getent" exits with 1 which terminates the script due to it being called by sh -e. --- cdist/conf/type/__user/explorer/group | 6 ++---- cdist/conf/type/__user/explorer/passwd | 5 ++--- cdist/conf/type/__user/explorer/shadow | 21 +++++++++++---------- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/cdist/conf/type/__user/explorer/group b/cdist/conf/type/__user/explorer/group index 2aae2973..0fd1471a 100755 --- a/cdist/conf/type/__user/explorer/group +++ b/cdist/conf/type/__user/explorer/group @@ -23,11 +23,9 @@ if [ -f "$__object/parameter/gid" ]; then gid=$(cat "$__object/parameter/gid") - getent=$(command -v getent) - if [ X != X"${getent}" ]; then - "${getent}" group "$gid" || true + if command -v getent >/dev/null; then + getent group "$gid" || true elif [ -f /etc/group ]; then grep -E "^(${gid}|([^:]+:){2}${gid}):" /etc/group || true fi fi - diff --git a/cdist/conf/type/__user/explorer/passwd b/cdist/conf/type/__user/explorer/passwd index 677e3ff0..b8391a6f 100755 --- a/cdist/conf/type/__user/explorer/passwd +++ b/cdist/conf/type/__user/explorer/passwd @@ -23,9 +23,8 @@ name=$__object_id -getent=$(command -v getent) -if [ X != X"${getent}" ]; then - "${getent}" passwd "$name" || true +if command -v getent >/dev/null; then + getent passwd "$name" || true elif [ -f /etc/passwd ]; then grep "^${name}:" /etc/passwd || true fi diff --git a/cdist/conf/type/__user/explorer/shadow b/cdist/conf/type/__user/explorer/shadow index c49992d5..73ce0e29 100755 --- a/cdist/conf/type/__user/explorer/shadow +++ b/cdist/conf/type/__user/explorer/shadow @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/sh -e # # 2011 Steven Armstrong (steven-cdist at armstrong.cc) # @@ -22,18 +22,19 @@ # name=$__object_id -os="$("$__explorer/os")" -# Default to using shadow passwords -database="shadow" -case "$os" in - "freebsd"|"netbsd"|"openbsd") database="passwd";; +case $("$__explorer/os") in + 'freebsd'|'netbsd'|'openbsd') + database='passwd' + ;; + # Default to using shadow passwords + *) + database='shadow' + ;; esac - -getent=$(command -v getent) -if [ X != X"${getent}" ]; then - "${getent}" "$database" "$name" || true +if command -v getent >/dev/null; then + getent "$database" "$name" || true elif [ -f /etc/shadow ]; then grep "^${name}:" /etc/shadow || true fi