initial release, prepared part of the readme, a simple daemon, and an improved arkmanager script

This commit is contained in:
FezVrasta 2015-06-18 00:54:25 +02:00
parent 915c4c67cd
commit 9e1d531033
6 changed files with 216 additions and 0 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

34
README.md Normal file
View File

@ -0,0 +1,34 @@
# ARK: Survival Evolved Linux Server Tools
## Pre-requisites
To install ARK Server Tools you must have already installed **SteamCMD** following this guide:
https://developer.valvesoftware.com/wiki/SteamCMD#Linux
We assume you have created the `steam` user to store steamcmd and your ARK server.
## Install ARK Server Tools
To install ARK Server Tools run these commands:
```sh
cd ~
wget https://github.com/FezVrasta/ark-server-tools/archive/master.zip
unzip master.zip -d arktools
cd arktools/tools
chmod u+x install.sh
./install.sh steam
```
NB: You may want to change the `install.sh` parameter to fit your steam user if different from `steam`.
This will copy the `arkmanager` and the `arkdaemon` to the proper directories and will create an empty log directory in `/var/log` for ARK Server Tools.
## Install ARK Server
To install ARK Server just run this command:
```sh
arkmanager install
```

BIN
tools/.DS_Store vendored Normal file

Binary file not shown.

43
tools/arkdaemon Normal file
View File

@ -0,0 +1,43 @@
#!/bin/bash
NAME=arkmanager_daemon
DESC="ARK manager daemon used to start the server and keep it updated"
PIDFILE="/var/run/${NAME}.pid"
LOGFILE="/var/log/${NAME}.log"
DAEMON="sh /usr/bin/arkmanager daemon"
START_OPTS="--start --background --make-pidfile --pidfile ${PIDFILE} --exec ${DAEMON}"
STOP_OPTS="--stop --pidfile ${PIDFILE}"
test -x $DAEMON || exit 0
set -e
case "$1" in
start)
echo -n "Starting ${DESC}: "
start-stop-daemon $START_OPTS >> $LOGFILE
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon $STOP_OPTS
echo "$NAME."
rm -f $PIDFILE
;;
restart|force-reload)
echo -n "Restarting $DESC: "
start-stop-daemon $STOP_OPTS
sleep 1
start-stop-daemon $START_OPTS >> $LOGFILE
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0

120
tools/arkmanager Normal file
View File

@ -0,0 +1,120 @@
#!/bin/bash
# ARK: survival evolved manager
#
# Original author: LeXaT
# Maintainer: FezVrasta
# config SteamCMD
steamcmdroot="/home/steam/steamcmd"
steamcmdexec="steamcmd.sh"
steamuser="anonymous"
steampass=""
# config Server
arkserverroot="/home/steam/ARK"
arkserverexec="ShooterGameServer"
arkserversession="GameServerSetup"
arkserverport="27016"
arkserverpass="SERVERPASSWORD"
akrserverapass="ADMINPASSWORD"
# config Service
servicename="arkserv"
logdir="$arkserverroot/logs"
# init
if [ ! -d "$arkserverroot" ]; then
mkdir $arkserverroot
fi
info=""
thejob=""
update=1
timestamp=$( date +%T )
cd $arkserverroot
instver=`cat "arkversion"`
cd $steamcmdroot
bnumber=`./$steamcmdexec +login anonymous +app_info_print "376030" +quit | grep -EA 5 "^\s+\"public\"$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -f3 | sed 's/^ //' | cut -c9-14`
case "$bnumber" in
*$instver*)
update=0
;; esac
# start function
doStart() {
arkserveropts="TheIsland?SessionName=$arkserversession?QueryPort=$arkserverport?ServerPassword=$arkserverpass?ServerAdminPassword=$arkserverapass?listen"
thejob="$arkserverroot/$arkserverexec $arkserveropts"
screen -dmS "$servicename" "$thejob"
echo "$timestamp: start" >> "$logdir/arkserver.log"
}
# stop function
doStop() {
screen -S "$servicename" -p 0 -X stuff "quit$(printf \\r)"
# screen -S "$servicename" -X quit
sleep 30
echo "$timestamp: stop" >> "$logdir/arkserver.log"
}
# update function
doUpdate() {
if (($update == 1))
then
if [ -f "$arkserverroot/arkupdate.timed" ]
then
doStop
cd $steamcmdroot
./$steamcmdexec +login anonymous +force_install_dir "$arkserverroot" +app_update 376030 validate +quit
cd $logdir
echo "$bnumber" > "$arkserverroot/arkversion"
cd $steamcmdroot
doStart
echo "$timestamp: update to $bnumber complete" >> "$logdir/update.log"
mail -a $logdir/update.log -s "Update-Log" mail@domain.com < /dev/null
rm "$arkserverroot/arkupdate.timed"
else
touch "$arkserverroot/arkupdate.timed"
info="There is a update for ark, server will restart in 60mins!!!!!"
doInfo $info
fi;
else
echo "$timestamp: No update needed." >> "$logdir/update.log"
fi;
}
#broadcast info
doInfo() {
if [ ! -z $1 ]; then
info=$1
fi
screen -S "$servicename" -p 0 -X stuff "broadcast $info $(printf \\r)"
}
# parameter select
case "$1" in
start)
doStart
;;
stop)
doStop
;;
restart)
doStop
doStart
echo "$timestamp: stop" >> "$logdir/arkserver.log"
sleep 60
echo "$timestamp: start" >> "$logdir/arkserver.log"
echo "$timestamp: restart" >> "$logdir/arkserver.log"
;;
update)
doUpdate
;;
broadcast)
doInfo "$2"
;;
*)
echo "use ./arkserver.sh <start|stop|restart|update>"
;;
esac

19
tools/install.sh Normal file
View File

@ -0,0 +1,19 @@
#!/bin/bash
if [ ! -z $1 ]; then
# Copy arkmanager to /usr/bin and set permissions
cp arkmanager /usr/bin/arkmanager
chmod +x /usr/bin/arkmanager
# Copy arkdaemon to /etc/init.d and set permissions
cp arkdaemon /etc/init.d/arkdaemon
chmod +x /etc/init.d/arkdaemon
# Create a folder in /var/log to let Ark tools write its own log files
mkdir /var/log/arktools
chown $1 /var/log/arktools
else
echo "You must specify your steam user to install ARK Tools. Usage: ./install.sh steam"
fi
exit 0