149 lines
3.2 KiB
Bash
149 lines
3.2 KiB
Bash
#!/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
|