From 9e1d531033d5f19c6824246928ebd75777479fdd Mon Sep 17 00:00:00 2001 From: FezVrasta Date: Thu, 18 Jun 2015 00:54:25 +0200 Subject: [PATCH] initial release, prepared part of the readme, a simple daemon, and an improved arkmanager script --- .DS_Store | Bin 0 -> 6148 bytes README.md | 34 ++++++++++++++ tools/.DS_Store | Bin 0 -> 6148 bytes tools/arkdaemon | 43 +++++++++++++++++ tools/arkmanager | 120 +++++++++++++++++++++++++++++++++++++++++++++++ tools/install.sh | 19 ++++++++ 6 files changed, 216 insertions(+) create mode 100644 .DS_Store create mode 100644 README.md create mode 100644 tools/.DS_Store create mode 100644 tools/arkdaemon create mode 100644 tools/arkmanager create mode 100644 tools/install.sh diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a4ff0b618687aa23124697ab25b15d9dd590d07c GIT binary patch literal 6148 zcmeHK%}T>S5ZcxXdnOSDP+1Z^9`z`Eb7-PIT@JfuCj4=ZgF_VMt8^L+h8Odl52Ly#Z zVs{w#+#qsi){^6YGJtot$PyMo3#RVx-R%V;PKw1ho>|B)E-f3m{0cU6HGkIVM#Dzp zB!jr>^iSnTc)qLcx|4K2?c*p4Cbr`?g+J_=>jzPoI3o1>Uqah05qi8W*flrBVcYr!pR!SB9~* zUEV)B>5Z>%Ztw0N9-p3H)JR#K7+v z!1uudMYJ`h3gy!Qoh$(Wv*4BjHr5gtV`;QCrV3#OgsV_M70Pvq!Bsf;Expdxm?~7^ zjO*fq>o0R%p>X+i*x!=N8MhTuPYe(P(+n)Ap^5qb@aOt}I*3NZ05LFE4Df8NQLDm{ zbZ(tF9OhaJ^c)lg*QE+4Az;W<3~MnJZ-Pnzzl8>%tua*y9uWEwkTg(74E!krAA0d# A+5i9m literal 0 HcmV?d00001 diff --git a/README.md b/README.md new file mode 100644 index 0000000..9ee2ee2 --- /dev/null +++ b/README.md @@ -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 +``` \ No newline at end of file diff --git a/tools/.DS_Store b/tools/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6f86be556f53d7ee161218cc1e787a76a1fae33d GIT binary patch literal 6148 zcmeHKK~BR!478yV1ui{u+#@F>eh^g!saN;_Ek%Gx8>zrO59Ci_#x{{6as?q|SN6EO zo=q}Rc4HCI`TOQlWF{h0I8m957>7rv4x;!FsJ6yR9%L(x?3VS&LVt0H_kJuZ*~^P; zfc^b9_v^Y@W0ulN(G-eU&%V*Z5r^e;RW1 zhMdj}Sz0QP3Zw$5Kq~MP3gFD9O-~&&rUI!zD$pyy{h`2#RbcCATL*%*0Kf@`&5-kh znVb?>1-6cufvHo0PSt2J)ae*6QC9`Fj!qYi=0oGkU(Ji!)v9GS z3!Cx$zrrgs+T>eFhEyOG_^%4+WO2KgVxRe`M|SK+wPf%zd|f@DYqenEjxq8=`T literal 0 HcmV?d00001 diff --git a/tools/arkdaemon b/tools/arkdaemon new file mode 100644 index 0000000..3c2b12f --- /dev/null +++ b/tools/arkdaemon @@ -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 \ No newline at end of file diff --git a/tools/arkmanager b/tools/arkmanager new file mode 100644 index 0000000..206c69c --- /dev/null +++ b/tools/arkmanager @@ -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 " + ;; +esac diff --git a/tools/install.sh b/tools/install.sh new file mode 100644 index 0000000..3359141 --- /dev/null +++ b/tools/install.sh @@ -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