#!/bin/bash # Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one # or more contributor license agreements. Licensed under the Elastic License; # you may not use this file except in compliance with the Elastic License. SCRIPT="$0" # SCRIPT may be an arbitrarily deep series of symlinks. Loop until we have the concrete path. while [ -h "$SCRIPT" ] ; do ls=`ls -ld "$SCRIPT"` # Drop everything prior to -> link=`expr "$ls" : '.*-> \(.*\)$'` if expr "$link" : '/.*' > /dev/null; then SCRIPT="$link" else SCRIPT=`dirname "$SCRIPT"`/"$link" fi done # determine elasticsearch home ES_HOME=`dirname "$SCRIPT"`/../.. # make ELASTICSEARCH_HOME absolute ES_HOME=`cd "$ES_HOME"; pwd` # If an include wasn't specified in the environment, then search for one... if [ "x$ES_INCLUDE" = "x" ]; then # Locations (in order) to use when searching for an include file. for include in /usr/share/elasticsearch/elasticsearch.in.sh \ /usr/local/share/elasticsearch/elasticsearch.in.sh \ /opt/elasticsearch/elasticsearch.in.sh \ ~/.elasticsearch.in.sh \ "`dirname "$0"`"/../elasticsearch.in.sh \ "$ES_HOME/bin/elasticsearch.in.sh"; do if [ -r "$include" ]; then . "$include" break fi done # ...otherwise, source the specified include. elif [ -r "$ES_INCLUDE" ]; then . "$ES_INCLUDE" fi if [ -x "$JAVA_HOME/bin/java" ]; then JAVA="$JAVA_HOME/bin/java" else JAVA=`which java` fi if [ ! -x "$JAVA" ]; then echo "Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME" exit 1 fi if [ -z "$ES_CLASSPATH" ]; then echo "You must set the ES_CLASSPATH var" >&2 exit 1 fi if [ -z "$CONF_DIR" ]; then # Try to read package config files if [ -f "/etc/sysconfig/elasticsearch" ]; then CONF_DIR=/etc/elasticsearch . "/etc/sysconfig/elasticsearch" elif [ -f "/etc/default/elasticsearch" ]; then CONF_DIR=/etc/elasticsearch . "/etc/default/elasticsearch" fi fi export HOSTNAME=`hostname -s` # include x-pack jars in classpath ES_CLASSPATH="$ES_CLASSPATH:$ES_HOME/plugins/x-pack/*" # don't let JAVA_TOOL_OPTIONS slip in (e.g. crazy agents in ubuntu) # works around https://bugs.launchpad.net/ubuntu/+source/jayatana/+bug/1441487 if [ "x$JAVA_TOOL_OPTIONS" != "x" ]; then echo "Warning: Ignoring JAVA_TOOL_OPTIONS=$JAVA_TOOL_OPTIONS" echo "Please pass JVM parameters via ES_JAVA_OPTS instead" unset JAVA_TOOL_OPTIONS fi # CONF_FILE setting was removed if [ ! -z "$CONF_FILE" ]; then echo "CONF_FILE setting is no longer supported. elasticsearch.yml must be placed in the config directory and cannot be renamed." exit 1 fi declare -a args=("$@") if [ -e "$CONF_DIR" ]; then args=("${args[@]}" -Edefault.path.conf="$CONF_DIR") fi cd "$ES_HOME" > /dev/null "$JAVA" $ES_JAVA_OPTS -cp "$ES_CLASSPATH" -Des.path.home="$ES_HOME" org.elasticsearch.xpack.security.authc.file.tool.UsersTool "${args[@]}" status=$? cd - > /dev/null exit $status