[__group] Fall back to /etc files if getent(1) is not available
Some (embedded) systems (and Mac OS X) don't provide getent(1). The workaround parses /etc/group under the assumption that the system only uses local users and groups.
This commit is contained in:
parent
97bcfcc23c
commit
bad3a4a4cb
2 changed files with 40 additions and 9 deletions
|
@ -1,6 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# 2011-2015 Steven Armstrong (steven-cdist at armstrong.cc)
|
# 2011-2015 Steven Armstrong (steven-cdist at armstrong.cc)
|
||||||
|
# 2019 Dennis Camera (dennis.camera at ssrq-sds-fds.ch)
|
||||||
#
|
#
|
||||||
# This file is part of cdist.
|
# This file is part of cdist.
|
||||||
#
|
#
|
||||||
|
@ -21,7 +22,21 @@
|
||||||
# Get an existing groups group entry.
|
# Get an existing groups group entry.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
not_supported() {
|
||||||
|
echo "Your operating system ($("$__explorer/os")) is currently not supported." >&2
|
||||||
|
echo "Cannot extract group information." >&2
|
||||||
|
echo "Please contribute an implementation for it if you can." >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
name=$__object_id
|
name=$__object_id
|
||||||
|
|
||||||
getent group "$name" || true
|
if command -v getent >/dev/null
|
||||||
|
then
|
||||||
|
getent group "$name" || true
|
||||||
|
elif [ -f /etc/group ]
|
||||||
|
then
|
||||||
|
grep "^${name}:" /etc/group || true
|
||||||
|
else
|
||||||
|
not_supported
|
||||||
|
fi
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# 2011-2015 Steven Armstrong (steven-cdist at armstrong.cc)
|
# 2011-2015 Steven Armstrong (steven-cdist at armstrong.cc)
|
||||||
|
# 2019 Dennis Camera (dennis.camera at ssrq-sds-fds.ch)
|
||||||
#
|
#
|
||||||
# This file is part of cdist.
|
# This file is part of cdist.
|
||||||
#
|
#
|
||||||
|
@ -22,13 +23,28 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
name=$__object_id
|
name=$__object_id
|
||||||
os="$("$__explorer/os")"
|
os=$("$__explorer/os")
|
||||||
|
|
||||||
case "$os" in
|
not_supported() {
|
||||||
|
echo "Your operating system ($os) is currently not supported." >&2
|
||||||
|
echo "Cannot extract group information." >&2
|
||||||
|
echo "Please contribute an implementation for it if you can." >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
case $os in
|
||||||
"freebsd"|"netbsd")
|
"freebsd"|"netbsd")
|
||||||
echo "$os does not have getent gshadow"
|
echo "$os does not have getent gshadow" >&2
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
getent gshadow "$name" || true
|
if command -v getent >/dev/null
|
||||||
|
then
|
||||||
|
getent gshadow "$name" || true
|
||||||
|
elif [ -f /etc/gshadow ]
|
||||||
|
then
|
||||||
|
grep "^${name}:" /etc/gshadow || true
|
||||||
|
else
|
||||||
|
not_supported
|
||||||
|
fi
|
||||||
|
|
Loading…
Reference in a new issue