| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #!/bin/sh
- # -*- tab-width:4;indent-tabs-mode:nil -*-
- # ex: ts=4 sw=4 et
- set -e
- ROOT_DIR="$(cd $(dirname $(readlink $0 || echo $0))/..; pwd -P)"
- . $ROOT_DIR/releases/emqx_vars
- # Echo to stderr on errors
- echoerr() { echo "$@" 1>&2; }
- if [ -z "$WITH_EPMD" ]; then
- EPMD_ARG="-start_epmd false -epmd_module ekka_epmd -proto_dist ekka"
- else
- EPMD_ARG="-start_epmd true"
- fi
- relx_get_nodename() {
- id="longname$(relx_gen_id)-${NAME}"
- "$BINDIR/erl" -boot start_clean -eval '[Host] = tl(string:tokens(atom_to_list(node()),"@")), io:format("~s~n", [Host]), halt()' -noshell ${NAME_TYPE} $id
- }
- # Control a node
- relx_nodetool() {
- command="$1"; shift
- ERL_FLAGS="$ERL_FLAGS $EPMD_ARG $PROTO_DIST_ARG" \
- "$ERTS_DIR/bin/escript" "$ROOTDIR/bin/nodetool" "$NAME_TYPE" "$NAME" \
- -setcookie "$COOKIE" "$command" "$@"
- }
- # Extract the target node name from node.args
- if [ -z "$NAME_ARG" ]; then
- if [ ! -z "$EMQX_NODE_NAME" ]; then
- NODENAME="$EMQX_NODE_NAME"
- elif [ ! -z `ps -ef | grep "$ERTS_PATH/beam.smp" | grep -o -E '\-name (\S*)' | awk '{print $2}'` ]; then
- NODENAME=`ps -ef | grep "$ERTS_PATH/beam.smp" | grep -o -E '\-name (\S*)' | awk '{print $2}'`
- else
- NODENAME=`egrep '^[ \t]*node.name[ \t]*=[ \t]*' $RUNNER_ETC_DIR/emqx.conf 2> /dev/null | tail -1 | cut -d = -f 2-`
- fi
- if [ -z "$NODENAME" ]; then
- echoerr "vm.args needs to have a -name parameter."
- echoerr " -sname is not supported."
- echoerr "please check $RUNNER_ETC_DIR/emqx.conf"
- exit 1
- else
- NAME_ARG="-name ${NODENAME# *}"
- fi
- fi
- # Extract the name type and name from the NAME_ARG for REMSH
- NAME_TYPE="$(echo "$NAME_ARG" | awk '{print $1}')"
- NAME="$(echo "$NAME_ARG" | awk '{print $2}')"
- # Extract the target cookie
- if [ -z "$COOKIE_ARG" ]; then
- if [ ! -z "$EMQX_NODE_COOKIE" ]; then
- COOKIE="$EMQX_NODE_COOKIE"
- elif [ ! -z `ps -ef | grep "$ERTS_PATH/beam.smp" | grep -o -E '\-setcookie (\S*)' | awk '{print $2}'` ]; then
- COOKIE=`ps -ef | grep "$ERTS_PATH/beam.smp" | grep -o -E '\-setcookie (\S*)' | awk '{print $2}'`
- else
- COOKIE=`egrep '^[ \t]*node.cookie[ \t]*=[ \t]*' $RUNNER_ETC_DIR/emqx.conf 2> /dev/null | tail -1 | cut -d = -f 2-`
- fi
- if [ -z "$COOKIE" ]; then
- echoerr "vm.args needs to have a -setcookie parameter."
- echoerr "please check $RUNNER_ETC_DIR/emqx.conf"
- exit 1
- else
- COOKIE_ARG="-setcookie $COOKIE"
- fi
- fi
- # Extract cookie name from COOKIE_ARG
- COOKIE="$(echo "$COOKIE_ARG" | awk '{print $2}')"
- # Support for IPv6 Dist. See: https://github.com/emqtt/emqttd/issues/1460
- PROTO_DIST=`egrep '^[ \t]*cluster.proto_dist[ \t]*=[ \t]*' $RUNNER_ETC_DIR/emqx.conf 2> /dev/null | tail -1 | cut -d = -f 2-`
- if [ -z "$PROTO_DIST" ]; then
- PROTO_DIST_ARG=""
- else
- PROTO_DIST_ARG="-proto_dist $PROTO_DIST"
- fi
- export ROOTDIR="$RUNNER_ROOT_DIR"
- export ERTS_DIR="$ROOTDIR/erts-$ERTS_VSN"
- export BINDIR="$ERTS_DIR/bin"
- cd "$ROOTDIR"
- relx_nodetool rpc emqx_ctl run_command "$@"
|