| #!/bin/sh |
| # |
| # $Id$ |
| # |
| # this shell script is designed to add new SNMPv3 users |
| # to Net-SNMP config file. |
| |
| prefix=@prefix@ |
| exec_prefix=@exec_prefix@ |
| includedir=@includedir@ |
| libdir=@libdir@ |
| datarootdir=@datarootdir@ |
| NSC_LDFLAGS="@LDFLAGS@" |
| NSC_INCLUDEDIR=${includedir} |
| NSC_LIBDIR=-L${libdir} |
| NSC_LIBS="@LIBS@" |
| NSC_AGENTLIBS="@AGENTLIBS@ @PERLLDOPTS_FOR_APPS@" |
| NSC_PREFIX=$prefix |
| NSC_EXEC_PREFIX=$exec_prefix |
| NSC_SRCDIR=@srcdir@ |
| NSC_INCDIR=${NSC_PREFIX}/include |
| NSC_BASE_SUBAGENT_LIBS="-lnetsnmpagent -lnetsnmp" |
| NSC_BASE_AGENT_LIBS="-lnetsnmpagent -lnetsnmpmibs -lnetsnmp" |
| NSC_SRC_LIBDIRS="agent/.libs snmplib/.libs" |
| NSC_SRC_LIBDEPS="agent/.libs/libnetsnmpmibs.a agent/.libs/libnetsnmpagent.a snmplib/.libs/libnetsnmp.a" |
| |
| if test "x$NSC_SRCDIR" = "x." ; then |
| NSC_SRCDIR="NET-SNMP-SOURCE-DIR" |
| fi |
| |
| 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) |
| 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] [-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 |
| 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 |