#!/bin/sh # # /usr/local/bin/localresetpasswd # Copyright 2006 Jonas Smedegaard # # $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"