Witam,
Mam problem z skryptem /etc/rc.d/init.d do automatycznej aktualizacji GRY STEAM ARK. Przerobiłem 3 skrypty w jeden ale coś nie działa poprawnie...
Problem jest w pliku latestavailableupdate.txt / linijce 36/39. Wydaje mi się, że skrypt źle kopiuje "buildid"...
Ręcznie jak próbuję zobaczyć buildid to wychodzi "buildid" "2494794" - a w pliku mam 2467222 latestavailableupdate.txt) czyli nie nadpisuje tego numeru a go zostawia...
Może mi ktoś pomóc? Sam nie jestem w stanie tego zobaczyć bo siedzę w innym programowaniu - SourcePawn (do gry CS:S). Tego nie ogarniam dlaczego nie działa.
Byłbym wdzięczny jakby ktoś sprawdził skrypt i go poprawił :).
HELP :)
#!/bin/bash
USERNAME='steam'
SERVICE='ShooterGameServ'
STEAMDIR=/XXX/steam
STEAMCMDDIR=/XXX/steam
SERVERDIR=/XXX/ark_se
RCONPASSWORD=profesionalnoobs
RCONIP=XXX.XXX.XXX.XXX
RCONPORT=XXXXX
RCONFILE=/XXX/steam/rcon/rcon
SCREEN=arkse
SERVERSTARTCOMMAND=$SERVERDIR"/ShooterGame/Binaries/Linux/ShooterGameServer \"Ragnarok?ServerAdminPassword=XXXXXXX?PreventDownloadSurvivors=true?PreventDownloadItems=true?RCONEnabled=True?RCONPort=XXXXX?ShowFloatingDamageText=true?PreventDownloadDinos=true?PreventUploadSurvivors=true?PreventUploadItems=true?PreventUploadDinos=true?MaxPlayers=50?listen? -game -server -log"
ark_update()
{
touch $SERVERDIR/test.txt
echo "16 line" > $SERVERDIR/test.txt
if [ ! -f $SERVERDIR/latestinstalledupdate.txt ] ; then
touch $SERVERDIR/latestinstalledupdate.txt
echo "0" >> $SERVERDIR/latestinstalledupdate.txt
fi
if [ -f $SERVERDIR/updateinprogress.dat ] ; then
if [ $(( (`date +%s` - `stat -L --format %Y $SERVERDIR/updateinprogress.dat`) > (60*60) )) -eq 1 ] ; then
rm -f $SERVERDIR/updateinprogress.dat
fi
fi
echo "26 line" >> $SERVERDIR/test.txt
if [ ! -f $SERVERDIR/updateinprogress.dat ] ; then
touch $SERVERDIR/updateinprogress.dat
rm -fr $STEAMDIR/appcache
$STEAMCMDDIR/steamcmd.sh +login anonymous +app_info_update 1 +app_info_print "376030" +quit | grep -EA 1000 "^\s+\"branches\"$" | grep -EA 5 "^\s+\"public\"$" | grep -m 1 -EB 10 "^\s+}$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d' ' -f3 > $SERVERDIR/latestavailableupdate.txt
sleep 10
LATESTUPDATE=`cat $SERVERDIR/latestavailableupdate.txt`
INSTALLEDUPDATE=`cat $SERVERDIR/latestinstalledupdate.txt`
echo "34 line" >> $SERVERDIR/test.txt
if [ "$LATESTUPDATE" == "$INSTALLEDUPDATE" ] ; then
rm -f $SERVERDIR/updateinprogress.dat
fi
if [ "$LATESTUPDATE" != "$INSTALLEDUPDATE" ] && [ "$LATESTUPDATE" != "" ] && [ "$INSTALLEDUPDATE" != "" ]
then
echo "37 line" >> $SERVERDIR/test.txt
$RCONFILE -P$RCONPASSWORD -a$RCONIP -p$RCONPORT serverchat New update available, server is restarting in 10 minutes!
sleep 5m
$RCONFILE -P$RCONPASSWORD -a$RCONIP -p$RCONPORT serverchat New update available, server is restarting in 5 minutes!
sleep 1m
$RCONFILE -P$RCONPASSWORD -a$RCONIP -p$RCONPORT serverchat New update available, server is restarting in 4 minutes!
sleep 1m
$RCONFILE -P$RCONPASSWORD -a$RCONIP -p$RCONPORT serverchat New update available, server is restarting in 3 minutes!
sleep 1m
$RCONFILE -P$RCONPASSWORD -a$RCONIP -p$RCONPORT serverchat New update available, server is restarting in 2 minutes!
sleep 1m
$RCONFILE -P$RCONPASSWORD -a$RCONIP -p$RCONPORT serverchat New update available, server is restarting in 1 minute!
sleep 1m
$RCONFILE -P$RCONPASSWORD -a$RCONIP -p$RCONPORT saveworld
echo "51 line" >> $SERVERDIR/test.txt
sleep 15
$RCONFILE -P$RCONPASSWORD -a$RCONIP -p$RCONPORT doexit
sleep 15
if [ -f $SERVERDIR/ShooterGame/Saved/SavedArks/Ragnarok.ark ] ; then
COUNTER=0
while [ $COUNTER -lt 5 ]; do
if [ $(( (`date +%s` - `stat -L --format %Y $SERVERDIR/ShooterGame/Saved/SavedArks/Ragnarok.ark`) > (2*60) )) -eq 1 ] ; then
COUNTER=5
fi
sleep 15
done
fi
echo "64 line" >> $SERVERDIR/test.txt
echo "$(date) Update - $(echo $INSTALLEDUPDATE) to $(echo $LATESTUPDATE)" >> $(echo $SERVERDIR)/Updatelog.txt
$STEAMCMDDIR/steamcmd.sh +login anonymous +force_install_dir /opt/ark_se +app_update 376030 +quit
$STEAMCMDDIR/steamcmd.sh +login anonymous +app_info_update 1 +app_info_print "376030" +app_info_print "376030" +quit | grep -EA 1000 "^\s+\"branches\"$" | grep -EA 5 "^\s+\"public\"$" | grep -m 1 -EB 10 "^\s+}$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d' ' -f3 > $SERVERDIR/latestinstalledupdate.txt
sleep 5
$RCONFILE -P$RCONPASSWORD -a$RCONIP -p$RCONPORT serverchat Update downloaded!
sleep 5
$RCONFILE -P$RCONPASSWORD -a$RCONIP -p$RCONPORT serverchat Server is restarting now!
sleep 5
echo "73 line" >> $SERVERDIR/test.txt
screen -x -S arkse kill
sleep 10
echo "76 line" >> $SERVERDIR/test.txt
screen -dmS arkse $SERVERSTARTCOMMAND
echo "78 line" >> $SERVERDIR/test.txt
rm -f $SERVERDIR/latestavailableupdate.txt
rm -f $SERVERDIR/updateinprogress.dat
echo "81 line" >> $SERVERDIR/test.txt
fi
fi
}
ark_start()
{
if pgrep -u $USERNAME -f $SERVICE > /dev/null
then
echo "$SERVICE is already running!"
else
echo "Starting $SERVICE..."
cd $SERVERDIR
screen -dmS $SCREEN $SERVERSTARTCOMMAND
sleep 7
if pgrep -u $USERNAME -f $SERVICE > /dev/null
then
echo "$SERVICE is now running."
else
echo "Error! Could not start $SERVICE!"
fi
fi
}
ark_stop()
{
if pgrep -u $USERNAME -f $SERVICE > /dev/null
then
screen -x -S $SCREEN kill
echo "Stopping $SERVICE"
sleep 7
else
echo "$SERVICE was not running."
fi
if pgrep -u $USERNAME -f $SERVICE > /dev/null
then
echo "Error! $SERVICE could not be stopped."
else
echo "$SERVICE is stopped."
fi
}
ark_restart()
{
sleep 5
$RCONFILE -P$RCONPASSWORD -a$RCONIP -p$RCONPORT serverchat Server restart in 15s.
sleep 5
$RCONFILE -P$RCONPASSWORD -a$RCONIP -p$RCONPORT admincheat destroywilddinos
sleep 10
if pgrep -u $USERNAME -f $SERVICE > /dev/null
then
screen -x -S $SCREEN kill
echo "Stopping $SERVICE"
sleep 7
else
echo "$SERVICE was not running."
fi
if pgrep -u $USERNAME -f $SERVICE > /dev/null
then
echo "Error! $SERVICE could not be stopped."
else
echo "$SERVICE is stopped."
fi
sleep 15
if pgrep -u $USERNAME -f $SERVICE > /dev/null
then
echo "$SERVICE is already running!"
else
echo "Starting $SERVICE..."
cd $ARKPATH
screen -dmS $SCREEN $SERVERSTARTCOMMAND
sleep 7
if pgrep -u $USERNAME -f $SERVICE > /dev/null
then
echo "$SERVICE is now running."
else
echo "Error! Could not start $SERVICE!"
fi
fi
}
#Start-Stop here
case "$1" in
start)
ark_start
;;
stop)
ark_stop
;;
restart)
ark_restart
;;
update)
ark_update
;;
status)
if pgrep -u $USERNAME -f $SERVICE > /dev/null
then
echo "$SERVICE is running."
else
echo "$SERVICE is not running."
fi
;;
*)
echo "Usage: $0 {start|stop|update|status|restart}"
exit 0
;;
esac
exit 1
1. Mozesz mi podać sens istnienia tego skryptu, jeśli gry się aktualizują zaraz po uruchomieniu Steam ?
Nie aktualizują się ? Steam nie uruchamia Ci się automatycznie na starcie systemu ?
2. Mozesz poprawić te XXX w skrypcie ? Bo to trochę denerwuje jakby ktoś to miał sprawdzać.
Potestuj z komendami i wybierz najlepszą
3. Musisz zapisywać hasło ? Nie możesz zmusić, żeby Steam pamiętał za ciebie ?
4. Jak coś Ci nie dziala dodaj tymczasowo opcje debugowania
Możesz sobie nawet funkcje debug zrobić jak chcesz
przykład
#!/bin/bash
#------------------------{
# Początek fukcji
# Opcje debugowania = "on" / "off"
DEBUG1=on
function Func_DEBUG()
{
[ "$DEBUG1" == "on" ] && echo -e "${RC} $@ ${NC}"
}
RC='\e[0;31m' # Red Color
NC='\e[0m' # No Color
# Koniec funkcji
#------------------------}
ZMIENNA="45"
# Przykład jak zobaczyć zmienną w danej chwili
Func_DEBUG "ZMIENNA = $ZMIENNA"
5. Mam nadzieje ze wiesz takze o istnieniu