| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328 |
- #!/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 emqttd_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 "emqttd is not running!"
- exit 1
- fi
- shift
- $NODETOOL rpc emqttd_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 "emqttd is not running!"
- exit 1
- fi
- shift
- $NODETOOL rpc emqttd_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 "emqttd is not running!"
- exit 1
- fi
- shift
- $NODETOOL rpc emqttd_ctl userdel $@
- ;;
-
- vm)
- if [ $# -gt 2 ]; then
- echo "Usage: $SCRIPT vm [ load | memory | process | io ]"
- exit 1
- fi
- # Make sure the local node IS running
- RES=`$NODETOOL ping`
- if [ "$RES" != "pong" ]; then
- echo "emqttd is not running!"
- exit 1
- fi
- shift
- $NODETOOL rpc emqttd_ctl vm $@
- ;;
- broker)
- if [ $# -ne 1 ]; then
- echo "Usage: $SCRIPT broker"
- exit 1
- fi
- # Make sure the local node IS running
- RES=`$NODETOOL ping`
- if [ "$RES" != "pong" ]; then
- echo "emqttd is not running!"
- exit 1
- fi
- shift
- $NODETOOL rpc emqttd_ctl broker $@
- ;;
- stats)
- if [ $# -ne 1 ]; then
- echo "Usage: $SCRIPT stats"
- exit 1
- fi
- # Make sure the local node IS running
- RES=`$NODETOOL ping`
- if [ "$RES" != "pong" ]; then
- echo "emqttd is not running!"
- exit 1
- fi
- shift
- $NODETOOL rpc emqttd_ctl stats $@
- ;;
- metrics)
- if [ $# -ne 1 ]; then
- echo "Usage: $SCRIPT metrics"
- exit 1
- fi
- # Make sure the local node IS running
- RES=`$NODETOOL ping`
- if [ "$RES" != "pong" ]; then
- echo "emqttd is not running!"
- exit 1
- fi
- shift
- $NODETOOL rpc emqttd_ctl metrics $@
- ;;
- bridges)
- # Make sure the local node IS running
- RES=`$NODETOOL ping`
- if [ "$RES" != "pong" ]; then
- echo "emqttd is not running!"
- exit 1
- fi
- if [[ $# -eq 2 ]] && [[ $2 = "list" ]]; then
- $NODETOOL rpc emqttd_ctl bridges list
- elif [ $# -eq 4 ]; then
- shift
- $NODETOOL rpc emqttd_ctl bridges $@
- else
- echo "Usage: "
- echo "$SCRIPT bridges list"
- echo "$SCRIPT bridges start <Node> <Topic>"
- echo "$SCRIPT bridges stop <Node> <Topic>"
- exit 1
- fi
- ;;
- plugins)
- # Make sure the local node IS running
- RES=`$NODETOOL ping`
- if [ "$RES" != "pong" ]; then
- echo "emqttd is not running!"
- exit 1
- fi
- if [ $# -eq 2 -a $2 = "list" ]; then
- $NODETOOL rpc emqttd_ctl plugins list
- elif [ $# -eq 3 ]; then
- shift
- $NODETOOL rpc emqttd_ctl plugins $@
- else
- echo "Usage: "
- echo "$SCRIPT plugins list"
- echo "$SCRIPT plugins load <Plugin>"
- echo "$SCRIPT plugins unload <Plugin>"
- exit 1
- fi
- ;;
- listeners)
- if [ $# -gt 1 ]; then
- echo "Usage: $SCRIPT listeners"
- exit 1
- fi
- # Make sure the local node IS running
- RES=`$NODETOOL ping`
- if [ "$RES" != "pong" ]; then
- echo "emqttd is not running!"
- exit 1
- fi
- shift
- $NODETOOL rpc emqttd_ctl listeners $@
- ;;
- trace)
- # Make sure the local node IS running
- RES=`$NODETOOL ping`
- if [ "$RES" != "pong" ]; then
- echo "emqttd is not running!"
- exit 1
- fi
- if [ $# -eq 2 -a $2 = "list" ]; then
- $NODETOOL rpc emqttd_ctl trace list
- elif [ $# -eq 4 ]; then
- shift
- $NODETOOL rpc emqttd_ctl trace $@
- else
- echo "Usage: "
- echo "$SCRIPT trace list"
- echo "$SCRIPT trace client <ClientId> <LogFile>"
- echo "$SCRIPT trace client <ClientId> off"
- echo "$SCRIPT trace topic <Topic> <LogFile>"
- echo "$SCRIPT trace topic <Topic> off"
- exit 1
- fi
- ;;
- *)
- echo "Usage: $SCRIPT"
- echo " status #query broker status"
- echo " vm [ load | memory | process | io ] #query load, memory, process and io of erlang vm"
- echo " broker #query broker version, uptime and description"
- echo " stats #query broker statistics of clients, topics, subscribers"
- echo " metrics #query broker metrics"
- echo " cluster [<Node>] #query or cluster nodes"
- echo " ----------------------------------------------------------------"
- echo " plugins list #query loaded plugins"
- echo " plugins load <Plugin> #load plugin"
- echo " plugins unload <Plugin> #unload plugin"
- echo " ----------------------------------------------------------------"
- echo " bridges list #query bridges"
- echo " bridges start <Node> <Topic> #start bridge"
- echo " bridges stop <Node> <Topic> #stop bridge"
- echo " ----------------------------------------------------------------"
- echo " useradd <Username> <Password> #add user"
- echo " userdel <Username> #delete user"
- echo " ----------------------------------------------------------------"
- echo " listeners #query broker listeners"
- echo " ----------------------------------------------------------------"
- echo " trace list #query all traces"
- echo " trace client <ClientId> <LogFile> #trace client with ClientId"
- echo " trace client <ClientId> off #stop to trace client"
- echo " trace topic <Topic> <LogFile> #trace topic with Topic"
- echo " trace topic <Topic> off #stop to trace Topic"
- exit 1
- ;;
-
- esac
|