Skip to content

Instantly share code, notes, and snippets.

@rarylson
Last active April 20, 2023 17:29
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save rarylson/72d1414d6907a4548427 to your computer and use it in GitHub Desktop.
Save rarylson/72d1414d6907a4548427 to your computer and use it in GitHub Desktop.
"net-snmp-create-v3-user" script for Ubuntu 14.04 (forgotten by the Ubuntu package mantainers)
#!/bin/sh
#
# $Id$
#
# this shell script is designed to add new SNMPv3 users
# to Net-SNMP config file.
prefix=/usr
exec_prefix=/usr
includedir=/usr/include
libdir=/usr/lib64
datarootdir=${prefix}/share
NSC_LDFLAGS="-Wl,-z,relro -Wl,-z,now"
NSC_INCLUDEDIR=${includedir}
NSC_LIBDIR=-L${libdir}
NSC_LIBS=""
NSC_AGENTLIBS=" -Wl,-E -Wl,-rpath,/usr/lib64/perl5/CORE"
NSC_PREFIX=$prefix
NSC_EXEC_PREFIX=$exec_prefix
NSC_SRCDIR=.
NSC_INCDIR=${NSC_PREFIX}/include
NSC_BASE_SUBAGENT_LIBS="-lnetsnmpagent -lnetsnmphelpers -lnetsnmp"
NSC_BASE_AGENT_LIBS="-lnetsnmpagent -lnetsnmphelpers -lnetsnmpmibs -lnetsnmp"
NSC_SRC_LIBDIRS="agent/.libs snmplib/.libs agent/helpers/.libs"
NSC_SRC_LIBDEPS="agent/.libs/libnetsnmpmibs.a agent/.libs/libnetsnmpagent.a agent/helpers/.libs/libnetsnmphelpers.a snmplib/.libs/libnetsnmp.a"
if test "x$NSC_SRCDIR" = "x." ; then
NSC_SRCDIR="NET-SNMP-SOURCE-DIR"
fi
if /bin/ps -e | 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 5.5
;;
--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="/var/lib/snmp"
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="/etc/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
@rarylson
Copy link
Author

Install

In Ubuntu:

wget https://gist.githubusercontent.com/rarylson/72d1414d6907a4548427/raw/d97aed8debf0a291a0457ec634a3be370bd16546/net-snmp-create-v3-user
chmod +x net-snmp-create-v3-user
mv net-snmp-create-v3-user /usr/local/bin

Now, you can run:

net-snmp-config --create-snmpv3-user [...]

This script was based in this pastebin proposed by Wylie (wyl1e).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment