Jo, mir fiel der Name nicht ein. Deswegen hab ich ihn auch nicht erwähnt.
EDIT: Cool, das ist ja einfach. Mal eben ausprobiert:
|
Source code
|
1
|
./srcupdatecheck ../valve/old_serverfiles/srcds/cstrike/steam.inf | grep -q 'OUT OF DATE!' && echo "Starte Update"
|
Ich hab mein Script mal umgestellt. Jetzt wird ein Update nur ausgeführt, wenn es erforderlich ist.
updatecheck.sh:
|
Source code
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#!/bin/bash
dirname=`dirname $0`
cd $dirname
games="srcds/orangebox/cstrike srcds/orangebox/dod srcds/orangebox/tf srcds/left4dead2/left4dead2 srcds/l4d/l4d srcds/hl2mp hlds/cstrike"
touch ./update.run
trap 'pkill steam; rm ./update.run; exit' 2
function check_game {
./srcupdatecheck serverfiles/$1/steam.inf | grep -q 'OUT OF DATE!'
}
for game in $games; do
echo "Checking $game"
if check_game $game; then
. ./update.sh $game
fi
done
rm ./update.run
|
update.sh
|
Source code
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#!/bin/bash
steamdir=~/valve
masterserver=~/valve/serverfiles
if [ -z "$1" ]; then exit; fi
function update_game {
updatename $1
echo -e "Updating $1";
while ! ./steam -command update -game "$game" -dir $masterserver/$engine/ -retry 2>/dev/null | grep -q "HLDS installation up to date"; do
echo -e "\E[31;40m[Fail]\nTrying again.."
done
echo -e "\E[32;40m[$1 is up to date]"
tput sgr0
}
function updatename {
game=
engine=
[[ "$1" = "srcds/orangebox/cstrike" ]] && game="Counter-Strike Source" && engine="srcds"
[[ "$1" = "srcds/orangebox/dod" ]] && game="dods" && engine="srcds"
[[ "$1" = "srcds/orangebox/tf" ]] && game="tf" && engine="srcds"
[[ "$1" = "srcds/l4d/l4d" ]] && game="l4d" && engine="srcds"
[[ "$1" = "srcds/hl2mp" ]] && game="hl2mp" && engine="srcds"
[[ "$1" = "hlds/cstrike" ]] && game="cstrike" && engine="hlds"
}
update_game $1
|
Kurze Erläuterung: Ich habe meinen Masterdateien in '/home/gs/valve/serverfiles' installiert. Mods der OldSourceEngine kommen nach hlds und Mods der SourceEngine kommen nach srcds. Also CS:S wäre in '/home/gs/valve/serverfiles/srcds/orangebox/cstrike'. Der Pfad sieht zwar lang aus, ist aber logisch aufgebaut und nachvollziehbar (Masterdateien/Engine/Fork/Mod). Das Script updatecheck.sh kann dann einfach alle 10 Minuten per Cronjob ausgeführt werden (ich hoffe mal, dass das den Masterserver nicht stört). Soll z.B. nur CSS gecheckt werden, kann man in updatercheck.sh die Variable games auf "srcds/orangebox/cstrike" ändern. Das Script setzt dann intern die Variable game (für den Steamupdater) und engine (hlds oder srcds). Vielleicht kann ja jemand dieses Script gebrauchen. Achja, für Verbesserungsvorschläge bin ich immer offen.
PS:
http://nephyrin.net/tools/nemrun/1.3/srcupdatecheck wird dann auch benötigt! In Zeile 7 des Scripts ist ein Fehler. Das Sonderzeichen einfach entfernen oder die ganze Zeile löschen.