|
|
|
|
|
January 30th, 2009, 05:39 PM
|
Private
|
|
Join Date: May 2008
Posts: 29
Thanks: 3
Thanked 4 Times in 4 Posts
|
|
Re: Linux Admining
My server wrapper and backup scripts. For this thread, I think the interesting bit is the backup script, since it's parametrized by game name.
Both scripts assume the game directory is ~/dominions3
The server wrapper passes all parameters directly to dom3. It only deals with the last parameter, which is assumed to be the name of the game. The wrapper is mainly for having a bunch of default parameters that I want to have all the time.
The backup script writes the backups to ~/dominions/backups. It reads the scores.html file to determine current turn, so the game needs to be run with --scoredump on.
dom3serv:
Code:
#! /usr/bin/env python
from os import environ, execvp, mkdir
from os.path import exists, join
from sys import argv
# Common options
common = ["--scoredump",
"--tcpserver",
"--quickhost",
"--textonly"
]
# Newgame standard options
newgame = ["--masterpass", "*****",
"--renaming",
"--noscoregraphs"]
# Start game
HOME = environ["HOME"]
GAME = argv[-1]
EXECS = ["--preexec", "dom3backup %s" % (GAME,)
# ,"--postexec", "command %s" % (GAME,)
]
common = common + EXECS
if exists(join(HOME,"dominions3","savedgames",GAME,"ftherlnd")):
print "Resuming game %s" % (GAME,)
execvp("dom3", ["dom3"] + common + argv[1:])
else:
print "Starting new game %s" % (GAME,)
if not exists(join(HOME,"dominions3","savedgames",GAME)):
mkdir(join(HOME,"dominions3","savedgames",GAME))
execvp("dom3", ["dom3"] + common + newgame + argv[1:])
dom3backup:
Code:
#! /bin/bash
game=$1
savedir="$HOME/dominions3/savedgames"
gamedir="$savedir/$game"
backupdir="$HOME/dominions3/backups/$game"
fatherland="$gamedir/ftherlnd"
if [ ! -d $gamedir ]; then
echo "Can't backup non-existent game!"
exit
fi
if [ -f $fatherland ]; then
if [ -f $gamedir/scores.html ]; then
turn=`grep -Eo -m 1 "Dominions 3 Scores, $game turn ([[:digit:]]+)" $gamedir/scores.html | grep -Eo "[[:digit:]]+$"`
else
turn=1
fi
backupfile="$backupdir/turn_$turn.tar.bz2"
else
backupfile="$backupdir/pregame.tar.bz2"
fi
# Make sure backup dir exists
if [ ! -d $backupdir ]; then
mkdir -p $backupdir
fi
# Create backupfile for this turn
echo "Creating backup file $backupfile"
tar cjf $backupfile -C $savedir $game > /dev/null
Edit:
Regarding that unattendedness stuff, I run my server processes each in their own window under GNU screen, so they'll print their log to a terminal, but I don't have to have a local/remote login open all the time. But that's more a part of the fact that my setup currently requires me to start each game manually.
Last edited by Ornedan; January 30th, 2009 at 05:48 PM..
|
The Following User Says Thank You to Ornedan For This Useful Post:
|
|
January 31st, 2009, 04:25 AM
|
|
Corporal
|
|
Join Date: Jan 2009
Location: Espoo, Finland
Posts: 147
Thanks: 23
Thanked 2 Times in 2 Posts
|
|
Re: Linux Admining
Thanks G
|
January 31st, 2009, 01:00 PM
|
|
Shrapnel Fanatic
|
|
Join Date: Oct 2003
Location: Vacaville, CA, USA
Posts: 13,736
Thanks: 341
Thanked 479 Times in 326 Posts
|
|
Re: Linux Admining
Quote:
Originally Posted by Ornedan
My server wrapper and backup scripts. For this thread, I think the interesting bit is the backup script, since it's parametrized by game name.
|
Excellent scripts.
I will definetly copy them and use them as examples as I work on consolidating mine. My stuff grew over time and I have a script to start each game type, and a script to restart for each game type, and one to kill/delete for each game type, and one to search/display dead games which the players didnt bother to turn off. Not to mention the many version 1, version 2, test this, test that scripts.
I really need to clean it all up and create larger scripts with options, I especailly like how you broke the common options from the newgame options for start and restart.
__________________
-- DISCLAIMER:
This game is NOT suitable for students, interns, apprentices, or anyone else who is expected to pass tests on a regular basis. Do not think about strategies while operating heavy machinery. Before beginning this game make arrangements for someone to check on you daily. If you find that your game has continued for more than 36 hours straight then you should consult a physician immediately (Do NOT show him the game!)
|
January 31st, 2009, 01:07 PM
|
|
Shrapnel Fanatic
|
|
Join Date: Oct 2003
Location: Vacaville, CA, USA
Posts: 13,736
Thanks: 341
Thanked 479 Times in 326 Posts
|
|
Re: Linux Admining
For backups I like to end it with a mime emailing to an account on another system. Backup on the same device is handy, on another device (drive, tape, etc) is handier, and on a completely different system is way handier.
__________________
-- DISCLAIMER:
This game is NOT suitable for students, interns, apprentices, or anyone else who is expected to pass tests on a regular basis. Do not think about strategies while operating heavy machinery. Before beginning this game make arrangements for someone to check on you daily. If you find that your game has continued for more than 36 hours straight then you should consult a physician immediately (Do NOT show him the game!)
|
March 5th, 2009, 01:18 PM
|
|
Corporal
|
|
Join Date: Jan 2009
Location: Espoo, Finland
Posts: 147
Thanks: 23
Thanked 2 Times in 2 Posts
|
|
Re: Linux Admining
First game finished using server hosting.. man that was simple! A new question occurred however while planning a new game. According to this list: http://www.dom3minions.com/docs/CommandLine.txt, its not possible to assign more than 1 victory point / province. I'm planning to set up game with one 3-vp and three 2-vp provinces in addition to 10 regular 1-vp provinces.
Any ideas is this possible? How?
Thanks already!
|
March 5th, 2009, 02:10 PM
|
National Security Advisor
|
|
Join Date: Nov 2006
Location: Oxford, UK
Posts: 5,921
Thanks: 194
Thanked 855 Times in 291 Posts
|
|
Re: Linux Admining
I think you have to start the game using the GUI, then run it as a command line game once it's started. The detailed VP settings are curiously absent from the command line options.
|
March 5th, 2009, 02:19 PM
|
|
Corporal
|
|
Join Date: Jan 2009
Location: Espoo, Finland
Posts: 147
Thanks: 23
Thanked 2 Times in 2 Posts
|
|
Re: Linux Admining
Thanks llamabeast - I think it's not possible to use GUI in our case. Sounds really mysterious why such commands are not available. Any other options?
Apparently me and Gandalf replied at the same time - I'll look into his solution. Thanks!
Last edited by Lihaässä; March 5th, 2009 at 02:27 PM..
|
September 17th, 2009, 05:38 PM
|
|
Corporal
|
|
Join Date: Jan 2009
Location: Espoo, Finland
Posts: 147
Thanks: 23
Thanked 2 Times in 2 Posts
|
|
Re: Linux Admining
Im trying to make a working, simple backup option for a hosting script. How do the commands --postexec and --preexec commands work? At the moment my script looks like this? It works ok without the --postexec command. At the moment the game refuses to start up.
Code:
#!/bin/bash
# Tällä käynnistellään dqotonen domi hostaukset
# jee
GAME="rivers"
MAP="Rivers.map"
ERA=3
MOD="CBcomplete_1.6.dm"
BUP=["rsync -a /home/dom/dominions3/savedgames/* /backup/"]
AID="57"
START=5
PORT="2222"
DOM="/home/dom/dominions3/dom3"
$DOM -S -T --port $PORT -g $GAME --era $ERA --mapfile $MAP -q --indepstr 9 --uploadmaxp $START --diffai $AID --enablemod $MOD --postexec $BUP
|
March 5th, 2009, 02:17 PM
|
|
Shrapnel Fanatic
|
|
Join Date: Oct 2003
Location: Vacaville, CA, USA
Posts: 13,736
Thanks: 341
Thanked 479 Times in 326 Posts
|
|
Re: Linux Admining
Only time for quick answer. Ask if confusing.
For me, easiest is appending a few commands to the end of the games .map file
http://www.dom3minions.com/docs/map_qref.txt
If someone elses map, dupe to new name. It will use the same image file so not much work involved.
--
per peer-pressure preoccupation
My maps, mods, and mullings can be found at
http://www.Dom3Minions.com
|
September 17th, 2009, 06:17 PM
|
|
General
|
|
Join Date: Mar 2007
Location: Japan
Posts: 3,691
Thanks: 269
Thanked 397 Times in 200 Posts
|
|
Re: Linux Admining
It's probably the [] characters in $BUP, if it's calling system() to run the postexec command then it won't work, because system() does a "/bin/sh -c":
Code:
$ /bin/sh -c ["/bin/ls -a"]
/bin/sh: [/bin/ls: No such file or directory
I put my postexec commands in a script and that worked fine:
Code:
$DOM3EXE $DOM3GAME \
--port $PORT -ST${DEBUG} ${SCOREOPT} ${RENAMEOPT} \
--era ${ERA} \
--uploadmaxp ${PLAYERS} --noclientstart \
--requiredvp 0 --totalvp 0 \
--mapfile ${MAP} \
--enablemod ${MOD} \
-q \
--masterpass ${MASTERPASS} \
--preexec ${DOM3DIR}/prehost.sh --postexec ${DOM3DIR}/posthost.sh \
>>$DOM3LOGDIR/$DOM3GAME.log 2>>$DOM3LOGDIR/$GAME.err
Also, do you need -g? The help for that shows:
Code:
-g --host Generate new turn and exit
__________________
Whether he submitted the post, or whether he did not, made no difference. The Thought Police would get him just the same. He had committed— would still have committed, even if he had never set pen to paper— the essential crime that contained all others in itself. Thoughtcrime, they called it. Thoughtcrime was not a thing that could be concealed forever.
http://z7.invisionfree.com/Dom3mods/index.php?
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is On
|
|
|
|
|