Sie sind nicht angemeldet.

  • DeaD_EyE

    Administrator

    Sie müssen sich registrieren, um eine Verbindung mit diesem Benutzer herzustellen.

13

ESL-Config Downloader

Bewertung:

Von DeaD_EyE, Dienstag, 8. März 2011, 20:10

Ich hab mal ein kleines Python-Script geschrieben, welches die ESL-Configs nur herunterlädt, wenn diese auf dem ESL-Server neuer sind, als die gespeicherten. Das Script lädt die cssconfig.zip in dem Verzeichnis herunter, in dem sich auch das Script befindet. Nach dem Download wird das Zip-Archiv entpackt und ein Shell-Script ausgeführt, dass sich im gleichen Verzeichnis befindet.


Hier der Code:

configdownloader.py

PHP-Quelltext

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/python
import urllibzipfileossysshlexsubprocess

cssconfigurl 'http://gfx.esl.eu/gfx/media/de/css/cfg/cssconfig.zip'
timestampfile 'cssconfig.zip.txt'
programm_after_download './config_update.sh'

os.chdir(os.path.split(os.path.abspath(sys.argv[0]))[0])

def getfile_extract(url):
    file url.split('/')[-1]
    urllib.urlretrieve(urlfile)
    file_zip zipfile.ZipFile(file)
    file_zip.extractall()
    file_zip.close()

def gettimestamp_server(file):
    timestamp_fp open(file,'r')
    configdate_server timestamp_fp.read()
    timestamp_fp.close()
    return configdate_server

def settimestamp_server(file,timestamp):
    timestamp_fp open(file,'w')
    timestamp_fp.write(timestamp)
    timestamp_fp.close()
    return

def programm_start(programm):
    start subprocess.Popen(shlex.split(programm), shell=False)
    return

configdate_esl str(urllib.urlopen(cssconfigurl).headers.getdate('Last-Modified'))
configdate_server None

if os.path.isfile(timestampfile):
    configdate_server gettimestamp_server(timestampfile)
    if not configdate_server == configdate_esl:
        getfile_extract(cssconfigurl)
        settimestamp_server(timestampfile,configdate_esl)
        programm_start(programm_after_download)
else:
    getfile_extract(cssconfigurl)
    settimestamp_server(timestampfile,configdate_esl)
    programm_start(programm_after_download)


Nach erfolgtem Update wird ein Shellscript ausgeführt. Als Beispiel habe ich mal eins erstellt, dass './config_update.sh' heißt.

config_update.sh

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
serverbasepath="/home/server/"
#Basisverzeichnis der Server
servers="testserver"
#Serververzeichnisse Mit einem Leerzeichen trennen
addpath="orangebox/cstrike/cfg"
#so belassen, wenn es Configs für CS:S sind
configdir="server"
#so belassen, wenn es cssconfigs.zip ist

if [ ! -"$configdir]; then exit; fi

for server in $servers; do
        if [ ! -"$serverbasepath/$server/$addpath/" ]; then continue; fi
        cp -u $configdir/* $serverbasepath/$server/$addpath/
done

Das Script aktualisiert alle eingetragenen Server. Ihr könnt dies auch nach belieben anpassen. Manche stehen eher auf die konventionelle Weise und tragen alle Server einzeln ein:

PHP-Quelltext

1
2
3
4
#!/bin/bash
cp -u server/* /home/server/warserver1/orangebox/cstrike/cfg/
cp -u server/* /home/server/warserver2/orangebox/cstrike/cfg/
cp -u server/* /home/server/warserver2/orangebox/cstrike/cfg/


Was noch eingebaut wird:
  • Programmabbruch, wenn der Server nicht erreichbar ist.

Dieser Artikel wurde bereits 472 223 mal gelesen.

Tags: Configs, Downloader, ESL

Kategorien: SRCDS


Kommentare (11)

Blog Navigation

Nächster Artikel

Backupscript für Webserver und MySQL

Von DeaD_EyE (Montag, 21. März 2011, 23:05)

Vorheriger Artikel

Waffen der Spieler entfernen...

Von DeaD_EyE (Freitag, 25. Februar 2011, 13:38)