mirror of
https://github.com/eliasstepanik/ark-ac-server-tools.git
synced 2026-01-13 03:18:28 +00:00
115 lines
2.9 KiB
Bash
115 lines
2.9 KiB
Bash
#!/bin/bash
|
|
|
|
# ARK: survival evolved manager
|
|
#
|
|
# Original author: LeXaT
|
|
# Maintainer: FezVrasta
|
|
|
|
# Global variables
|
|
source ~/.arkmanager.cfg
|
|
|
|
# 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"
|
|
}
|
|
|
|
# install function
|
|
doInstall() {
|
|
cd $steamcmdroot
|
|
./$steamcmdexec +login $steamuser $steampass +force_install_dir "$arkserverroot" +app_update 376030 validate +quit
|
|
}
|
|
|
|
# update function
|
|
doUpdate() {
|
|
if (($update == 1))
|
|
then
|
|
if [ -f "$arkserverroot/arkupdate.timed" ]
|
|
then
|
|
doStop
|
|
cd $steamcmdroot
|
|
./$steamcmdexec +login $steamuser $steampass +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
|
|
echo "$timestamp: stop" >> "$logdir/arkserver.log"
|
|
sleep 60
|
|
doStart
|
|
echo "$timestamp: start" >> "$logdir/arkserver.log"
|
|
echo "$timestamp: restart" >> "$logdir/arkserver.log"
|
|
;;
|
|
install)
|
|
doInstall
|
|
;;
|
|
update)
|
|
doUpdate
|
|
;;
|
|
broadcast)
|
|
doInfo $2
|
|
;;
|
|
*)
|
|
echo "use arkmanager <start|stop|restart|install|update|broadcast>"
|
|
;;
|
|
esac
|