148 lines
3.0 KiB
Bash
148 lines
3.0 KiB
Bash
#!/bin/sh
|
|
#
|
|
# $Id$
|
|
#
|
|
# 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 demon 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
|
|
case "$1" in
|
|
-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
|
|
*) optarg= ;;
|
|
esac
|
|
|
|
unset shifted
|
|
case $1 in
|
|
--version|--ver*)
|
|
echo @VERSION@
|
|
;;
|
|
--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"
|
|
line="createUser $user $Aalgorithm \"$apassphrase\" $Xalgorithm \"$xpassphrase\""
|
|
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@"
|
|
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
|