summaryrefslogtreecommitdiff
path: root/localresetpasswd
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2006-08-31 22:51:03 +0000
committerJonas Smedegaard <dr@jones.dk>2006-08-31 22:51:03 +0000
commit3570eb5b841dc045f0e2cb8824f803890126e1c4 (patch)
tree058ba7d1817143fe1b77870d4aab58e2fa5a2920 /localresetpasswd
parent2d318969f4ff92f5361004419053fd09f46ed39b (diff)
Fix password expiry routine. Separate password setting and password expiry setting routines.
Diffstat (limited to 'localresetpasswd')
-rwxr-xr-xlocalresetpasswd48
1 files changed, 48 insertions, 0 deletions
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 <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!"
+
+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"