160 lines
3.7 KiB
Bash
Executable File
160 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
RUNNER_SCRIPT_DIR=$(cd ${0%/*} && pwd)
|
|
|
|
RUNNER_BASE_DIR=${RUNNER_SCRIPT_DIR%/*}
|
|
RUNNER_ETC_DIR=$RUNNER_BASE_DIR/etc
|
|
RUNNER_BIN_DIR=$RUNNER_BASE_DIR/bin
|
|
RUNNER_LOG_DIR=$RUNNER_BASE_DIR/log
|
|
|
|
RUNNER_EBIN_DIR=$RUNNER_BASE_DIR/ebin
|
|
RUNNER_USER=
|
|
|
|
# Make sure CWD is set to runner base dir
|
|
cd $RUNNER_BASE_DIR
|
|
|
|
# Extract the target node name from node.args
|
|
NAME_ARG=`grep '\-[s]*name' $RUNNER_ETC_DIR/emqtt.args`
|
|
if [ -z "$NAME_ARG" ]; then
|
|
echo "emqtt.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/emqtt.args`
|
|
if [ -z "$COOKIE_ARG" ]; then
|
|
echo "emqtt.args needs to have a -setcookie parameter."
|
|
exit 1
|
|
fi
|
|
|
|
# Identify the script name
|
|
SCRIPT=`basename $0`
|
|
|
|
# Parse out release and erts info
|
|
ERLANG_BASE_DIR=/usr/local/lib/erlang
|
|
START_ERL=`cat $ERLANG_BASE_DIR/releases/start_erl.data`
|
|
ERTS_VSN=${START_ERL% *}
|
|
APP_VSN=${START_ERL#* }
|
|
|
|
# Add ERTS bin dir to our path
|
|
ERTS_PATH=$ERLANG_BASE_DIR/erts-$ERTS_VSN/bin
|
|
|
|
# Setup command to control the node
|
|
NODETOOL="$ERTS_PATH/escript $RUNNER_BIN_DIR/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
|
|
|
|
# Make sure the local node IS running
|
|
RES=`$NODETOOL ping`
|
|
if [ "$RES" != "pong" ]; then
|
|
echo "Node is not running!"
|
|
exit 1
|
|
fi
|
|
shift
|
|
|
|
$NODETOOL rpc emqtt_ctl status $@
|
|
;;
|
|
|
|
cluster_info)
|
|
if [ $# -ne 1 ]; then
|
|
echo "Usage: $SCRIPT cluster_info"
|
|
exit 1
|
|
fi
|
|
|
|
# Make sure the local node IS running
|
|
RES=`$NODETOOL ping`
|
|
if [ "$RES" != "pong" ]; then
|
|
echo "Node is not running!"
|
|
exit 1
|
|
fi
|
|
shift
|
|
|
|
$NODETOOL rpc emqtt_ctl cluster_info $@
|
|
;;
|
|
|
|
|
|
cluster)
|
|
if [ $# -ne 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 $@
|
|
;;
|
|
|
|
add_user)
|
|
if [ $# -ne 3 ]; then
|
|
echo "Usage: $SCRIPT add_user <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 add_user $@
|
|
;;
|
|
|
|
delete_user)
|
|
if [ $# -ne 2 ]; then
|
|
echo "Usage: $SCRIPT delete_user <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 delete_user $@
|
|
;;
|
|
|
|
*)
|
|
echo "Usage: $SCRIPT"
|
|
echo " status #query emqtt status"
|
|
echo " cluster_info #query cluster nodes"
|
|
echo " cluster <Node> #cluster node"
|
|
echo " add_user <Username> <Password> #add user"
|
|
echo " delete_user <Username> #delete user"
|
|
exit 1
|
|
;;
|
|
|
|
esac
|
|
|