162 lines
4.0 KiB
Bash
Executable File
162 lines
4.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# /bin/sh on Solaris is not a POSIX compatible shell, but /usr/bin/ksh is.
|
|
if [ `uname -s` = 'SunOS' -a "${POSIX_SHELL}" != "true" ]; then
|
|
POSIX_SHELL="true"
|
|
export POSIX_SHELL
|
|
# To support 'whoami' add /usr/ucb to path
|
|
PATH=/usr/ucb:$PATH
|
|
export PATH
|
|
exec /usr/bin/ksh $0 "$@"
|
|
fi
|
|
unset POSIX_SHELL # clear it so if we invoke other scripts, they run as ksh as well
|
|
|
|
RUNNER_SCRIPT_DIR={{runner_script_dir}}
|
|
RUNNER_SCRIPT=${0##*/}
|
|
|
|
RUNNER_BASE_DIR={{runner_base_dir}}
|
|
RUNNER_ETC_DIR={{runner_etc_dir}}
|
|
RUNNER_LIB_DIR={{platform_lib_dir}}
|
|
RUNNER_LOG_DIR={{runner_log_dir}}
|
|
RUNNER_USER={{runner_user}}
|
|
|
|
WHOAMI=$(whoami)
|
|
|
|
# Make sure this script is running as the appropriate user
|
|
if ([ "$RUNNER_USER" ] && [ "x$WHOAMI" != "x$RUNNER_USER" ]); then
|
|
type sudo > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
echo "sudo doesn't appear to be installed and your EUID isn't $RUNNER_USER" 1>&2
|
|
exit 1
|
|
fi
|
|
echo "Attempting to restart script through sudo -H -u $RUNNER_USER" >&2
|
|
exec sudo -H -u $RUNNER_USER -i $RUNNER_SCRIPT_DIR/$RUNNER_SCRIPT $@
|
|
fi
|
|
|
|
# Make sure CWD is set to runner base dir
|
|
cd $RUNNER_BASE_DIR
|
|
|
|
# Extract the target node name from node.args
|
|
NAME_ARG=`egrep "^ *-s?name" $RUNNER_ETC_DIR/vm.args`
|
|
if [ -z "$NAME_ARG" ]; then
|
|
echo "vm.args needs to have either -name or -sname parameter."
|
|
exit 1
|
|
fi
|
|
|
|
# Learn how to specify node name for connection from remote nodes
|
|
echo "$NAME_ARG" | grep '^-sname' > /dev/null 2>&1
|
|
if [ "X$?" = "X0" ]; then
|
|
NAME_PARAM="-sname"
|
|
NAME_HOST=""
|
|
else
|
|
NAME_PARAM="-name"
|
|
echo "$NAME_ARG" | grep '@.*' > /dev/null 2>&1
|
|
if [ "X$?" = "X0" ]; then
|
|
NAME_HOST=`echo "${NAME_ARG}" | sed -e 's/.*\(@.*\)$/\1/'`
|
|
else
|
|
NAME_HOST=""
|
|
fi
|
|
fi
|
|
|
|
# Extract the target cookie
|
|
COOKIE_ARG=`grep '\-setcookie' $RUNNER_ETC_DIR/vm.args`
|
|
if [ -z "$COOKIE_ARG" ]; then
|
|
echo "vm.args needs to have a -setcookie parameter."
|
|
exit 1
|
|
fi
|
|
|
|
# Identify the script name
|
|
SCRIPT=`basename $0`
|
|
|
|
# Parse out release and erts info
|
|
START_ERL=`cat $RUNNER_BASE_DIR/releases/start_erl.data`
|
|
ERTS_VSN=${START_ERL% *}
|
|
APP_VSN=${START_ERL#* }
|
|
|
|
# Add ERTS bin dir to our path
|
|
ERTS_PATH=$RUNNER_BASE_DIR/erts-$ERTS_VSN/bin
|
|
|
|
# Setup command to control the node
|
|
NODETOOL="$ERTS_PATH/escript $ERTS_PATH/nodetool $NAME_ARG $COOKIE_ARG"
|
|
|
|
# Check the first argument for instructions
|
|
case "$1" in
|
|
status)
|
|
if [ $# -ne 1 ]; then
|
|
echo "Usage: $SCRIPT status"
|
|
exit 1
|
|
fi
|
|
|
|
RES=`$NODETOOL ping`
|
|
if [ "$RES" != "pong" ]; then
|
|
echo "Node is not running!"
|
|
exit 1
|
|
fi
|
|
shift
|
|
|
|
$NODETOOL rpc emqtt_ctl status $@
|
|
;;
|
|
|
|
cluster)
|
|
if [ $# -gt 2 ]; then
|
|
echo "Usage: $SCRIPT cluster [<Node>]"
|
|
exit 1
|
|
fi
|
|
|
|
# Make sure the local node IS running
|
|
RES=`$NODETOOL ping`
|
|
if [ "$RES" != "pong" ]; then
|
|
echo "emqtt is not running!"
|
|
exit 1
|
|
fi
|
|
shift
|
|
|
|
$NODETOOL rpc emqtt_ctl cluster $@
|
|
;;
|
|
|
|
useradd)
|
|
if [ $# -ne 3 ]; then
|
|
echo "Usage: $SCRIPT useradd <Username> <Password>"
|
|
exit 1
|
|
fi
|
|
|
|
# Make sure the local node IS running
|
|
RES=`$NODETOOL ping`
|
|
if [ "$RES" != "pong" ]; then
|
|
echo "emqtt is not running!"
|
|
exit 1
|
|
fi
|
|
shift
|
|
|
|
$NODETOOL rpc emqtt_ctl useradd $@
|
|
;;
|
|
|
|
userdel)
|
|
if [ $# -ne 2 ]; then
|
|
echo "Usage: $SCRIPT userdel <Username>"
|
|
exit 1
|
|
fi
|
|
|
|
# Make sure the local node IS running
|
|
RES=`$NODETOOL ping`
|
|
if [ "$RES" != "pong" ]; then
|
|
echo "emqtt is not running!"
|
|
exit 1
|
|
fi
|
|
shift
|
|
|
|
$NODETOOL rpc emqtt_ctl userdel $@
|
|
;;
|
|
|
|
*)
|
|
echo "Usage: $SCRIPT"
|
|
echo " status #query emqtt status"
|
|
echo " cluster [<Node>] #query or cluster nodes"
|
|
echo " useradd <Username> <Password> #add user"
|
|
echo " userdel <Username> #delete user"
|
|
exit 1
|
|
;;
|
|
|
|
esac
|
|
|