diff options
author | José Bollo <jose.bollo@iot.bzh> | 2018-01-19 14:58:27 +0100 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2018-10-26 13:31:56 +0200 |
commit | d2d9e83bd9bdc3a091d6b9f1ccaec012fba2f0f4 (patch) | |
tree | 8d1ba496b809f6baf62ba2864756b417f4a3e1a7 /activate-localuser.sh | |
parent | a248d2827dcfc35b894013299dc2486d4a37db0b (diff) |
Initial commit of nss-localuserguppy_6.99.4guppy_6.99.3guppy_6.99.2guppy_6.99.1guppy/6.99.4guppy/6.99.3guppy/6.99.2guppy/6.99.16.99.46.99.36.99.26.99.1
`nss-localuser` is a plugin for the GNU Name Service Switch (NSS)
functionality of the GNU C Library (`glibc`) providing host name
resolution for *"localuser"* family of virtual hostnames.
The delivered NSS service defines one virtual host of name `localuser`
that resolves to an IP address of the localhost loopback that integrates
user ID.
Change-Id: I2a33dc23518ce3f4581f5c37df9476dbbc58f262
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'activate-localuser.sh')
-rwxr-xr-x | activate-localuser.sh | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/activate-localuser.sh b/activate-localuser.sh new file mode 100755 index 0000000..8f40116 --- /dev/null +++ b/activate-localuser.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +action=$(echo ${1:-status} | tr '[a-z]' '[A-Z]') +file=${2:-/etc/nsswitch.conf} + +# compute activated value +activated=false +if grep -q '^hosts:.*\<localuser\>' "${file}" 2>/dev/null; then + activated=true +fi + +# compute activate value +case ${action} in + ON|YES|TRUE|1) activate=true;; + OFF|NO|FALSE|0) activate=false;; + QUERY|TEST|CHECK|STATUS) ${activated} && echo ON || echo OFF; exit 0;; + *) echo "Bad command: $1" >&2; exit 1;; +esac + +# exit if already set as desired +[ "${activate}" = "${activated}" ] && exit 0 + +# process +if ${activate}; then + sedcmd='/^hosts:/s/hosts:[ \t]*/&localuser /' +else + sedcmd='/^hosts:/s/localuser *//' +fi +if ! cp "${file}" "${file}~"; then + echo "Can't save file ${file} to ${file}~" >&2 + exit 1 +fi +if ! grep -q '^hosts:' "${file}"; then + if ! echo >> "${file}" || ! echo "hosts: " >> "${file}"; then + echo "Can't add host: to ${file}" >&2 + cp "${file}~" "${file}" && rm "${file}~" + exit 1 + fi +fi +if ! sed -i "${sedcmd}" "${file}"; then + echo "Can't process ${file}" >&2 + cp "${file}~" "${file}" && rm "${file}~" + exit 1 +fi |