#!/bin/sh
#
# /usr/local/bin/localresetpasswd
# Copyright 2006 Jonas Smedegaard <dr@jones.dk>
#
# $Id: localresetpasswd,v 1.1 2006-08-31 22:51:03 jonas Exp $
#
# Generate random password and apply to account through sudo
#
# TODO: Check for bad arguments
# TODO: Use getopts to offer help
# TODO: Support overriding options in /etc/local file
#

set -e

pass_len=11

verbose=1
#simulate=true
interactive=0

# echo something, but only if in verbose mode
vecho() {
	test -n "$verbose" && echo "$@" >&2
}

randompass() {
	gpw 1 $pass_len 2>&- ||
	pwgen $pass_len 1 2>&- ||
	tr -d '[\000-\057][\072-\100][\133-\140][\173-\377]' < /dev/urandom |
		dd bs=$pass_len count=1 2>&-
}

u=$1
shift

vecho -n "Generating random password..."
pass=$(randompass)
vecho " Done!"

sudo=sudo
[ "$(id -u)" -ne 0 ] || sudo=

vecho -n "Applying new password to account $u..."
echo "$u:$pass" | eval $simulate $sudo "/usr/sbin/chpasswd"
vecho "  Done!"

eval $simulate localresetpasswdexpiry "$u"

vecho "New password is $pass"