From 3570eb5b841dc045f0e2cb8824f803890126e1c4 Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Thu, 31 Aug 2006 22:51:03 +0000 Subject: Fix password expiry routine. Separate password setting and password expiry setting routines. --- localresetpasswd | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100755 localresetpasswd (limited to 'localresetpasswd') diff --git a/localresetpasswd b/localresetpasswd new file mode 100755 index 0000000..17f41fe --- /dev/null +++ b/localresetpasswd @@ -0,0 +1,48 @@ +#!/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!" + +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" -- cgit v1.2.3