--- /dev/null
+#!/bin/bash
+
+while [ -n "$1" ]; do
+ case "$1" in
+ "--all"|"-a")
+ ALL=1
+ ;;
+ "--local"|"-l")
+ LOCAL=1
+ ;;
+ *)
+ echo "Usage: $0 [--local|-l]"
+ exit 1
+ esac
+ shift
+done
+
+sw_vers -productName | grep -i "Server" >/dev/null 2>&1
+if [ $? -eq 0 -a -z "$LOCAL" ]; then
+ # Mac OS X Server
+ OD=1
+fi
+
+if [ -n "$OD" ]; then
+ HOST="localhost"
+ USER_BASE="/LDAPv3/127.0.0.1/Users"
+ UID_MIN=1000
+else
+ HOST="."
+ USER_BASE="/Users"
+ UID_MIN=500
+fi
+
+[ -n "$ALL" ] && UID_MIN=0
+
+dscl "$HOST" -list "$USER_BASE" | while read x; do
+ declare -i id
+ id=`dscl "$HOST" -read "$USER_BASE/$x" UniqueID | cut -d: -f2`
+ if [ "$id" -gt $UID_MIN ]; then
+ echo " $id: $x"
+ fi
+done | sort -n
+
+# -eof-