Debian Script ab einem bestimmten Abschnitt weitermachen

Hallo,

deine "Problembeschreibung" ist echt top ;)
Naja, kommt drauf an, wie die getrennt sind. Am einfachsten ist es durch einen Tabulator oder durch ein Leerzeichen, aber auch ein Zeilenumbruch ist kein Problem.

Bash:
alles=$( cat DATEI.txt )

for akt in $alles; do
  echo "Teil: $akt"
done

Gruß
BK
 
wäre es vieleicht auch einfacher das ich so eine Art Config erstelle und er z.B

mit

cacheordner=home/cache

ausließt so das er das hinter dem = nimmt. Dann wäre man eventl nicht an Zeilen etc. gebunden gibts da ne Möglichkeit
 
Hallo,

super funktioniert,

ich habe es aber nun so gelöst. Manchmal findet man Lösungen auch wenn man zufällig in ein altes Script reinschaut.

Bis jetzt ist ein geiles Gameserverstartscript entstanden. Es funktioniert tadelos. Ist für Alle HL Games und Games der COD Serie gedacht. Hier ein kurze Vorschau.

Das Script erledigt eine automatische Fastdl Zuweisung über die Startsequenz, eine Neuinstallfunktion der Gameserver, updates von Steam und Punkbuster (Hardupdate), startet bei cod den Manuadmin Mod 5 Sekunden nach Serverstart.

Nun geht mir noch eine Idee im Kopf rum:

Und zwar die automatische Anpassung der HLTV Config oder der Manu Admin Config:

Dazu muss das Script sich Daten aus der Server.cfg des Gameservers ziehen.

wie z.b.

Server.cfg
Code:
// Der Hostname bezeichnet deinen Servernamen
// Das rcon Password macht dich zum Admin auf deinen Server

hostname "CSS - Server"
rcon_password "topsecret"

// Mani Admin Plugin
//
// exec mani_server.cfg
// exec mani_quake_sounds.cfg


sv_password "test"



/////////////////////////////////////////////////////////////////////////
// Electronic Sports League
// CS:S Config 5on5 Ladder
// Version 4.0
// 27.01.2009

mp_allowspectators "1"
mp_autokick "0"
mp_autoteambalance "0"
mp_buytime "0.25"
mp_c4timer "35"
mp_chattime "5"
mp_decals "300"
mp_dynamicpricing "0"
mp_fadetoblack "0"
mp_flashlight "1"
mp_footsteps "1"
mp_forcecamera "1"
mp_freezetime "6"

Hier müsst sich das Script den Parameter

sv_password "test"

hier müsste sich das Script das test nehmen und in einer anderen Config an einem bestimmten Punkt wieder einsetzen.

Sagen wir die Config lautet so:


ip=xxx.xxx.xxx.xxx
port=xxxxxx
password=test
servername=Hier bin Ich


Sprich die Parameter oben und muss er lassen und nur das rote abändern.


Beste Grüsse
 
Hallo,

für das austauschen von Daten in einer Datei nehm ich bevorzugt sed her.
Der ist zwar etwas "umständlich" zu bedienen, aber schnell und kann so ziemlich alles was man braucht.

Zu deiner Problemstellung könntest du etwas wie folgt verwenden:
Bash:
# Aus der Serverconfig etwas auslesen, hier "sv_password"
value=$( grep sv_password /pfad/zur/Server.cfg | sed -e 's/^[[:space:]]*sv_password[[:space:]]\+"\([^"]*\)"/\1/' )

# Schauen ob das Feld "password=" bereits in der Zielconfig vorhanden ist
grep password= /pfad/zur/Config &>/dev/null

if [[ $? -eq 0 ]]; then  # Vorhanden!
  sed -i /pfad/zur/Config -e "s/^\(password=\).*$/\1${value}/"
else  # Nicht vorhanden!
  echo "password=${value}" >/pfad/zur/Config
fi

Gruß
BK
 
funktioniert schon ganz gut das was allerdings leichte Probleme macht ist wenn er an den Punkt "logfile" kommt

wenn er da $log einsetzen soll

welches ../../mod/pfad enthalten gibts Probleme

sed -i /pfad/zur/Config -e "s/^\(password=\).*$/\1${value}/"
 
Hallo,

dies liegt daran, dass in dem Wert Slashes vorkommen (Diese da: / ).
Somit musst du bei sed einen anderen Delimiter wählen, oder den String escapen.

Bash:
sed -i /pfad/zur/Config -e "s|^\(log=\).*$|\1${log}|"

Gruß
BK
 
Irgendwo habe ich da nen Denkfehler

Code:
sed -i /home/$fdpfad/mods/manuadminmod/config/config.cfg -e "s/^\(logfile[[:space:]]=[[:space:]]\).*$|\1"\"${log}\""|"
 
Joa,

du hast bei deinem sed-Befehl den Delimiter nicht überall geändert, es sollte wie folgt heißen:
Bash:
sed -i /home/$fdpfad/mods/manuadminmod/config/config.cfg -e "s|^\(logfile[[:space:]]+=[[:space:]]+\).*$|\1${log}|"

Gruß
BK
 

Neue Beiträge

Zurück