forked from net-snmp/net-snmp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
net-snmp-create-v3-user.in
148 lines (141 loc) · 3.15 KB
/
net-snmp-create-v3-user.in
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#!/bin/sh
#
# this shell script is designed to add new SNMPv3 users
# to Net-SNMP config file.
if @PSCMD@ | @EGREP@ ' snmpd *$' > /dev/null 2>&1 ; then
echo "Apparently at least one snmpd daemon is already running."
echo "You must stop them in order to use this command."
exit 1
fi
Aalgorithm="MD5"
Xalgorithm="DES"
token=rwuser
while test "x$done" = "x" -a "x$1" != "x" -a "x$usage" != "xyes"; do
unset shifted
case $1 in
--version|--ver*)
echo @VERSION@
exit 0
;;
--help)
usage="yes"
;;
-A|-a)
shift
if test "x$1" = "x" ; then
echo "You must specify an authentication algorithm or pass phrase"
exit 1
fi
case $1 in
MD5|SHA|SHA-512|SHA-384|SHA-256|SHA-224)
Aalgorithm=$1
shift
;;
md5|sha)
Aalgorithm=$(echo "$1" | tr a-z A-Z)
shift
;;
*)
apassphrase=$1
shift
;;
esac
;;
-X|-x)
shift
if test "x$1" = "x" ; then
echo "You must specify an encryption algorithm or pass phrase"
exit 1
fi
case $1 in
DES|AES|AES128)
Xalgorithm=$1
shift
;;
des|aes|aes128)
Xalgorithm=$(echo "$1" | tr a-z A-Z)
shift
;;
*)
xpassphrase=$1
shift
;;
esac
;;
-ro)
token="rouser"
shift
;;
-*)
echo "unknown suboption to $0: $1"
usage=yes
done=1
;;
*)
done=1
;;
esac
done
if test "x$usage" = "xyes"; then
echo ""
echo "Usage:"
echo " net-snmp-create-v3-user [-ro] [-A authpass] [-X privpass]"
echo " [-a MD5|SHA|SHA-512|SHA-384|SHA-256|SHA-224] [-x DES|AES] [username]"
echo ""
exit
fi
if test "x$1" = "x" ; then
prompt=yes
echo "Enter a SNMPv3 user name to create: "
read user
else
user=$1
shift
fi
if test "x$user" = "x" ; then
echo "You must specify a user name"
exit 1
fi
if test "x$apassphrase" = "x" ; then
prompt=yes
echo "Enter authentication pass-phrase: "
read apassphrase
fi
if test "x$apassphrase" = "x" ; then
echo "You must specify an authentication pass-phrase"
exit 1
fi
if test "x$prompt" = "xyes" -a "x$xpassphrase" = "x" ; then
echo "Enter encryption pass-phrase: "
echo " [press return to reuse the authentication pass-phrase]"
read xpassphrase
fi
outdir="@PERSISTENT_DIRECTORY@"
outfile="$outdir/snmpd.conf"
if test "x$xpassphrase" = "x" ; then
line="createUser $user $Aalgorithm \"$apassphrase\" $Xalgorithm"
else
line="createUser $user $Aalgorithm \"$apassphrase\" $Xalgorithm \"$xpassphrase\""
fi
echo "adding the following line to $outfile:"
echo " $line"
# in case it hasn't ever been started yet, start it.
if test ! -d "$outdir"; then
mkdir "$outdir"
fi
if test ! -d "$outfile"; then
touch "$outfile"
fi
echo "$line" >> "$outfile"
prefix=@prefix@
datarootdir=@datarootdir@
# To suppress shellcheck complaints about $prefix and $datarootdir.
: "$prefix" "$datarootdir"
outfile="@datadir@/snmp/snmpd.conf"
line="$token $user"
echo "adding the following line to $outfile:"
echo " $line"
if test ! -d "$outfile"; then
touch "$outfile"
fi
echo "$line" >> $outfile