• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Shell: Config per Execute in Script.

Maxi Ebel

Neues Mitglied
Hallo, ich habe vor ein Shell-Script für den Start-Stop-Restart von GameServern zu schreiben und möchte eine Externe Configurations Datei haben.

So habe ich mir gedacht mach ich eine "config.cfg" und ein "startscript" am anfang des Startscripts wird mittels (exec "config.cfg") die config eingelesen die nur aus Variablen besteht.
Nur wenn ich das Script jetz ausführe Interpretiert er alle Variablen "$VAR" als befehl.
Was kann ich da tun?

"OS: Debian"

Danke schonmal.
 
Wenn das ein Bash-Script ist, würde ich die Variablen in solcher Form abspeichern:
Code:
FOO='bar'
PATH='/etc/foobar'
und dein einfach die Config im Bash-Script ausführen:
Code:
. /etc/my-custom.conf
 
Würde es in der /bin/sh ebenfalls gehen?

ich hätt kur noch ne frage zu "case" was bedeutet die (Variable) 'case ("$1") in'

Code:
STARTSCRIPT
#!/bin/sh

. /kundenconfig.cfg

case "$1" in
    start)
        if [[ `screen -ls |grep $screenname` ]]
        then
            echo "Fehler: Server läuft bereits, nutze '$0 stop' um es zu Stoppen."
        else
            cd $kundenverz
            screen -dmS $screenname $kundenverz/cod4_lnxded +set net_port $port +set dedicated 2 +set sv_punkbuster $punkbuster +set loc_language 2 +set sv_pure 1 +exec server.cfg +set fs_homepath $kundenverz +map_rotate
            echo "Server wurde Erfolgreich gestartet."
        fi
    ;;
    stop)
        if [[ `screen -ls |grep $screenname` ]]
        then
            kill `screen -ls |grep $screen |awk -F . '{print $1}'|awk '{print $1}'`
            echo "Server wurde Angehalten."
        else
            echo "Fehler: Server ist nicht Gestartet."
        fi
    ;;
    restart)
	if [[ `screen -ls |grep $screenname` ]]
	then
           kill `screen -ls |grep $screenname |awk -F . '{print $1}'|awk '{print $1}'`
	    echo "Server wurde Angehalten."
	    
	else
	    echo "Fehler: Server ist nicht Gestartet."
           cd $kundenverz
           screen -dmS $screen $kundenverz/cod4_lnxded +set net_port $port +set dedicated 2 +set sv_punkbuster $punkbuster +set loc_language 2 +set sv_pure 1 +exec server.cfg +set fs_homepath $kundenverz +map_rotate
           echo "Server wurde Erfolgreich gestartet."
	fi
    ;;
    status)
        if [[ `screen -ls |grep $screenname` ]]
        then
            echo "Server läuft."
        else
            echo "Server läuft nicht."
        fi
    ;;
    *)
        echo "Der Befehl existiert nicht."
        echo "Benutze: $0 [start|stop|restart|status]"
        exit 1
    ;;
esac

exit 0

CONFIG
#Grundeinstellungen.
servername="EliteGameGroup - Server";   # Servername angeben z.B.: "[Clan] Game Server" (Farbcodes Möglich)
config="server.cfg";  # Configurationsdatei des Servers. (Standart "server.cfg")
mod="";   # Mod Verzeichniss. z.B.: "/mods/CustomMaps/" (Standart "")
punkbuster="0";   # 0 = AUS / 1 = AN

#Serverinformationen.
admin="";   # Hier tragen sie den Namen des Admins ein.
email="";   # Hier tragen sie ihre Email Adresse ein.
website="";   # Hier tragen sie ihre Website ein.

#Passwörter.
rcon="";   # Hier tragen sie ihr Rcon-Passwort ein.
serverpasswort="";   # Hier tragen sie ihr Server-Passwort ein.
privatepasswort="";   # Hier tragen sie ihr Private-Passwort ein.

#Spieleranzahl
maxclients="";   # Maximale Spieleranzahl. (Wird begrenzt durch ihre gemietete Slot Zahl)
privateclients="";   # Private Spieleranzahl.

#Ping
minping="";   # Minimaler Ping eines Spielers.
maxping="";   # Maximaler Ping eines Spielers.

#Rauswurf
kickbantime="";   # Dauer eines Temporären Bann in Minuten z.B.: "60" -> 1 Stunde.










###------------------- ACHTUNG ------------------###
# Unter dieser Linie keine Einstellungen Verändern.
#--------------------------------------------------#
kunde="20-001-01";
kundenverz="/home/cod4-server/.'$kunde'"
screenname="cod4_"
ip="212.227.99.232";
port="28999";
tsport="28961";
 
Zuletzt bearbeitet von einem Moderator:
$1 ist der erste Parameter der übergeben wurde. $2 der zweite usw.

$0 sollte der Dateiname des Scripts sein.

Ich behaupte jetzt mal, dass es egal ist, ob sh oder bash. sh ist sicher nur ein Link auf deine bevorzugte Shell und das ist meistens bash.
 
Okey danke schonmal ich mach mich dann mal ans testen...
bis später (morgen).

So also die Variablen liest er jetz ein aber er gibt sie so aus .'variable'

Daraus folgt:
/home/cod4-server/.'20-001-01': No such file or directory

Es sollte aber sein:
/home/cod4-server/20-001-01

Okey habs gefunden hab scheiß gebaut^^

Vielen dank für alles "crash".. :D
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben