-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmake-password-grid.sh
More file actions
executable file
·81 lines (73 loc) · 2.23 KB
/
make-password-grid.sh
File metadata and controls
executable file
·81 lines (73 loc) · 2.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/bin/sh
#
# make-password-grid.sh - build a grid of 8x4 16 character passwords,
# and optionally send them to the printer
#
# Copyright (C) 2022 Michael Davies <michael@the-davies.net>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# Or try here: http://www.fsf.org/copyleft/gpl.html
#
# Include bash library
command -v bashlib.sh &> /dev/null || \
{ echo >&2 "$(basename $0): Can't find bashlib.sh. Aborting."; exit 1; }
. bashlib.sh
random_password ()
{
echo $(LC_ALL=C tr -dc '[:alnum:]~`!@#$%^&()_=+[]{}|;:",./<>?' </dev/urandom | head -c $1)
}
make_password_grid ()
{
TMPFILE=$1
for LINES in $(seq 1 8); do
for PASSWORDS in $(seq 1 4); do
PASS="$(random_password 16)"
COLOURISED=$(colourprint "$PASS")
echo -n "$COLOURISED " | tee -a $TMPFILE
done
echo "" | tee -a $TMPFILE
done
}
display_usage ()
{
printf "%s [-h] [-p]\n" $(basename $0)
printf " -h display this help\n"
printf " -p send output to the default printer\n"
}
PRINT=0
for ARG in "$@"; do
case $ARG in
-h)
display_usage
exit 0
;;
-p)
PRINT=1
ensure_cmd aha
ensure_cmd wkhtmltopdf
;;
*)
display_usage
echo "Unknown option, exiting..."
exit 1
;;
esac
done
OUTPUTFILE=$(mktemp "${TMPDIR:-/tmp/}$(basename $0).XXXXXXXXXXXX")
make_password_grid $OUTPUTFILE
if [ $PRINT -eq 1 ]; then
$(cat $OUTPUTFILE | aha | wkhtmltopdf -q - - | lpr) &> /dev/null
fi
rm $OUTPUTFILE