#!/bin/sh """": # -*-python-*- bup_python="$(dirname "$0")/../cmd/bup-python" || exit $? exec "$bup_python" "$0" ${1+"$@"} """ # end of bup preamble # Note: this currently relies on bup-python to handle arbitrary binary # user/group names. from __future__ import absolute_import, print_function import grp import pwd import sys def usage(): print('Usage: id-other-than <--user|--group> ID [ID ...]', file=sys.stderr) if len(sys.argv) < 2: usage() sys.exit(1) def is_integer(x): try: int(x) return True except ValueError as e: return False excluded_ids = set(int(x) for x in sys.argv[2:] if is_integer(x)) excluded_names = (x for x in sys.argv[2:] if not is_integer(x)) if sys.argv[1] == '--user': for x in excluded_names: excluded_ids.add(pwd.getpwnam(x).pw_uid) for x in pwd.getpwall(): if x.pw_uid not in excluded_ids: print(x.pw_name + ':' + str(x.pw_uid)) sys.exit(0) elif sys.argv[1] == '--group': for x in excluded_names: excluded_ids.add(grp.getgrnam(x).gr_gid) for x in grp.getgrall(): if x.gr_gid not in excluded_ids: print(x.gr_name + ':' + str(x.gr_gid)) sys.exit(0) else: usage() sys.exit(1)