Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Startscript für OpenSim etc
#1
Hallo zusammen ;D

Ich hab ein schönes Startscript gefunden das eigentlich für einen Minecraft Server gedacht war. Das ganze wurde dann von einen lieben User umgeschrieben, so das dieses auch für OpenSim/Arriba oder halt WhiteCore Sim brauchbar ist.

Hier der Code

Code:
#!/bin/bash

##########################################################################
################################ ABOUT ###################################
##########################################################################
#                                                                        #
# Author:      Enrico Ludwig (Morph)                                     #
# Version:     1.0.0.0 (14. May 2014)                                    #
# License:     GNU GPL v2 (See: http://www.gnu.org/licenses/gpl-2.0.txt) #
# Created:     14. May 2014                                              #
# Description: Control your Arriba - Sim                              #
#                                                                        #
##########################################################################

########################
### GENERAL SETTINGS ###
########################

SERVER_EXE="OpenSim.exe"

SCREEN_NAME="AS-Chaoslands"

###################
### APPLICATION ###
###################
VERSION="1.0.0.0"

###################
### COLOR CODES ###
###################
COLOR_DEFAULT="\e[39m"
COLOR_LGRAY="\e[37m"
COLOR_RED="\e[31m"
COLOR_YELLOW="\e[33m"
COLOR_GREEN="\e[32m"
COLOR_BLUE="\e[94m"

#################
### FUNCTIONS ###
#################

# Prints info message to shell
function info {
  echo -e "$COLOR_LGRAY[${COLOR_BLUE}MINESTART${COLOR_LGRAY}][${COLOR_GREEN}INFO${COLOR_LGRAY}] $@$COLOR_DEFAULT"
}

# Prints error message to shell
function error {
  echo -e "$COLOR_LGRAY[${COLOR_BLUE}MINESTART${COLOR_LGRAY}][${COLOR_RED}ERROR${COLOR_LGRAY}] $@$COLOR_DEFAULT"
}

# Prints warning message to shell
function warn {
  echo -e "$COLOR_LGRAY[${COLOR_BLUE}MINESTART${COLOR_LGRAY}][${COLOR_YELLOW}WARN${COLOR_LGRAY}] $@$COLOR_DEFAULT"
}

# Checks, if package 'screen' is installed
#
# 1 = Package is installed
# 2 = Package is NOT installed
function isScreenInstalled {
  screen -v &> /dev/null
  if [[ $? -eq 1 ]]; then
    echo 1
    return
  elif [[ $? -eq 127 ]]; then
    echo 0
    return
  else
    echo 0
    return
  fi
}

# 1 = Server is running
# 0 = Server is not running
function isRunning {
  # At first, check if there is already a screen session
  $(screen -ls | grep -q "$SCREEN_NAME")
  
  if [[ $? -eq 0 ]]; then
    echo 1
  else
    echo 0
  fi
}

# This function returns the PID of the screen session $SCREEN_NAME
# (see definition at the top of this file)
function getScreenPid {
  local SCREEN_PID=$(screen -ls | grep "$SCREEN_NAME" | grep -oEi "([0-9]+)\." | tr -d '.')
  
  echo $SCREEN_PID
}

# Send the given arguments as command to the server
function doCmd {
  if [[ -z $1 ]]; then
    error "There is no command given to execute"
    return
  fi

  if [[ $(isRunning) -eq 1 ]]; then
    screen -S "$SCREEN_NAME" -p 0 -X stuff "$* $(printf \\r)"
  else
    error "There is no Server running with Screen Name '$SCREEN_NAME'"
  fi
}

# Opens the console (screen session $SCREEN_NAME)
function openConsole {
  if [[ $(isRunning) -eq 1 ]]; then
    screen -r "$SCREEN_NAME"
  else
    error "There is no Server running with Screen Name '$SCREEN_NAME'"
  fi
}

# Starts the Arriba - sim server
function startServer {
  # Check if given EXE file is existing
  if [[ ! -f $SERVER_EXE ]]; then
    error "Could not find Server EXE file '$SERVER_EXE'"
    error "Please set SERVER_EXE constant in $0"
    exit 1
  fi

  local RUNNING=$(isRunning)
  
  if [[ $RUNNING -eq 0 ]]; then
    if [[ $JDK_INSTALLED -eq 1 ]]; then
      screen -S "$SCREEN_NAME" -d -m mono "$SERVER_EXE"

      local ERR_CODE=$?

      if [[ $ERR_CODE -eq 0 ]]; then
        # Save PID
        local PID=$(getScreenPid)
        echo $PID > "$SERVER_EXE.pid"
      
        info "Starting Arriba - Sim Server ..."
        info "Using Executable: $SERVER_EXE"
        info "Process ID: $PID"
        info "Server started successfully!"
      else
        error "Could not start Arriba - Sim Server (Error Code: $ERR_CODE)"
        
        # Error Code 127 = Screen is not installed
        if [[ $ERR_CODE -eq 127 ]]; then
          error "You have to install the package 'screen'"
        fi
      fi
    else
      screen -S "$SCREEN_NAME" -d -m mono "$SERVER_EXE"

      local ERR_CODE=$?

      if [[ $ERR_CODE -eq 0 ]]; then
        # Save PID
        local PID=$(getScreenPid)
        echo $PID > "$SERVER_EXE.pid"

        info "Starting Arriba - Sim Server ..."
        info "Using Executable: $SERVER_EXE"
        info "Process ID: $PID"
        info "Server started successfully!"
      else
        error "Could not start Arriba - Sim Server (Error Code: $ERR_CODE)"
        
        # Error Code 127 = Screen is not installed
        if [[ $ERR_CODE -eq 127 ]]; then
          error "You have to install the package 'screen'"
        fi
      fi
    fi
  else
    warn "The server is still running!"
    warn "You can restart the script using 'restart'"
  fi
}

# Stops the Arriba - sim server
function stopServer {
  info "Stopping Arriba - Sim Server ($SCREEN_NAME)"
  
  if [[ $(isRunning) -eq 0 ]]; then
    warn "Server is NOT running!"
    rm -Rf "$SERVER_EXE.pid"
    
    return
  else
    doCmd "shutdown"
  fi
  
  local TRIES=0 # After 5 tries, error will be thrown
  while sleep 1
    info "Shutting down ..."
    TRIES=$((TRIES+1))
    
    if [[ $TRIES -ge 5 ]]; then
      # Check running again and give feedback
      if [[ $(isRunning) -eq 1 ]]; then
        error "Stopping server failed! You should check the server log files"
        return
      else
        info "Server was stopped successfully!"
        return
      fi
      
      return
    fi
  do
    # Only if the server is offline, remove the PID file
    if [[ $(isRunning) -eq 0 ]]; then
      rm -Rf "$SERVER_EXE.pid"
    fi
  done
}

# Prints the help message
function printHelp {
  # Set color to white
  echo -e "$COLOR_LGRAY"
  
  printf "###########################\n"
  printf "### ARRIBASTART v${VERSION} ###\n"
  printf "###########################\n\n"
  
  printf "Developed by Enrico Ludwig (Morph)\n\n"
  
  printf "~$ whitestart [start|stop|restart|status|help|(Arriba command)] [(params)]\n\n"
  
  printf "Examples:\n"
  printf "1. ./arribastart.sh start (Starts the server from the current directory)\n"
  printf "2. ./arribastart.sh stop (Stopps the server from the current directory)\n"
  printf "3. ./arribastart.sh status (Prints the server status (online / offline))\n"
  printf "4. ./arribastart.sh restart (Restarts the server from the current directory)\n"
  printf "5. ./arribastart.sh reload (Reloads the server (alias for 'cmd reload')\n"
  printf "6. ./arribastart.sh console (Opens the screen session with the server console)\n"
  printf "7. ./arribastart.sh cmd [cmdname] {params} (Executes the given Server Command with optional arguments)\n"
  printf "8. ./arribastart.sh help (Shows this help)\n\n"

  printf "Questions? Ideas? Bugs? Contact me here: http://forum.mds-tv.de\n\n"
  
  # Reset color to default
  echo -e "$COLOR_DEFAULT"
  
  exit
}

#####################
### FUNCTIONS END ###
#####################

# Check, if first Param is set, or print help if not
if [[ -z $1 ]]; then
  printHelp
fi

# Check if screen is installed!
SCREEN_INSTALLED=$(isScreenInstalled)

if [[ $SCREEN_INSTALLED -eq 0 ]]; then
  error "You have to install the package 'screen'"
  error "On Debian based Systems (like Ubuntu) you can do: 'apt-get install screen'"
  error "On RedHat based Systems (like CentOS) you can do: 'yum install screen'"
  exit 1
fi

# Server control
case "$1" in
  "start")
    startServer
    ;;
  "stop")
    stopServer
    ;;
  "restart")
    stopServer
    startServer
    ;;
  "status")
    if [[ $(isRunning) -eq 1 ]]; then
      info "The Server with screen name '$SCREEN_NAME' is running!"
    else
      info "The Server with screen name '$SCREEN_NAME' is NOT running!"
    fi
    ;;
  "cmd")
    doCmd ${@:2}
    ;;
  "reload")
    doCmd "reload"
    ;;
  "console")
    if [[ $(isRunning) -eq 1 ]]; then
      info "Entering Server Console"
      openConsole
      info "Exiting Server Console"
    else
      error "The Server with screen name '$SCREEN_NAME' is NOT running!"
    fi
    ;;
  "help")
    printHelp
    ;;
  *)
    error "Unknown command '$1'"
    ;;
esac

Und hier die Quelle wo ich das Script bekomme hab.
Signatur
Have a nice Day ;D

>> BogusMusikRausch alle 14 Tage an einem Donnerstag, um 20 Uhr in Uwes KeulenBar

Tschöö

Bogus | MagicPlace.de | M: @gse@norden.social
Zitieren


Nachrichten in diesem Thema
Startscript für OpenSim etc - von Bogus Curry - 02.07.2014, 05:50

Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Richtige Dateirechte und Rechtevergabe für OpenSim Holger Berger 2 343 10.01.2025, 13:39
Letzter Beitrag: Holger Berger
  OpenSim und die neue Version 0.9.3.0 Holger Berger 3 784 26.12.2024, 11:55
Letzter Beitrag: Holger Berger
  OpenSim Problem mit Raspberry Pi 4 Pius Noel 1 745 12.08.2024, 19:25
Letzter Beitrag: Pius Noel
  Automatische Einstellung einer IP beim Start von OpenSim royalgrid 6 1.206 26.03.2024, 14:31
Letzter Beitrag: Manfred Aabye
Brick Neues Grid aka Aufbau OpenSim mit Robust und Co... brenner23 31 49.214 16.08.2020, 19:53
Letzter Beitrag: Manfred Aabye

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 4 Gast/Gäste