CS:S Startscript einrichten

Dieses Thema im Forum "Linux & BSD" wurde erstellt von mad-fighter, 2. Februar 2010 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 2. Februar 2010
    Hallo,

    habe mir auf einem meiner Rechner nen CS:S Server installiert u. versuche nun diesen über das hier im TUT-Bereich gepostete script zum laufen zu bekommen.
    Abgeändert schaut dies so aus:

    Code:
    #! /bin/bash
    #
    # Start the Counter-Strike: Source dedicated server.
    #
    # AUTHORS :
    #
    # Julien Escario ( pandemik@azilog.net )
    # &
    # Cedric Rochat ( crochat@younics.org )
    # &
    # Cmdr._Firewalker ( cmdr._firewalker@web.de )
    #
    # ===========================================
    #
    # What you need:
    #
    # Linux :)
    # awk
    # screen
    # the srcds_l & cstrike files (obtainable via steam)
    #
    # How to use:
    #
    # Edit the CS_USER-Var to the user running your cs-servers
    # Edit the DIR-Var to fit your system (just contains the path to the dir that contains srcds_run)
    # Edit the PARAMS-Var to fit your needs
    # - standard is startup as internet server
    # if you use multiple scripts on one system you should change the NAME-var (otherwise 
    # all will be stopped if you run the script with "stop", and status will be useless)
    #
    # When this is done, copy the file to /etc/rc.d/init.d (or whereever your system stores the
    # scripts for starting the services) and set the execute permission.
    # Now you can link the script to your runlevel-dir, here's an example for runlevel 3:
    # ln -s /etc/rc.d/init.d/srcds /etc/rc.d/rc3.d/S90srcds
    # ln -s /etc/rc.d/init.d/srcds /etc/rc.d/rc3.d/K50srcds
    # or use update-rc.d if you got a system using that tool (like Debian, see manpage)
    #
    # Or use it manually like:
    # ./srcds start
    # ./srcds stop
    #
    # To see the server-console start the script with the parameter "watch".
    #
    # DOC by jwm (jwm@counter-strike.de)
    
    # !!!!!!!!!!!!!! CHANGE THIS TO THE USER YOU USE FOR YOUR SERVER !!!!!!!!!!!!!!!
    CS_USER=css
    
    PATH=/bin:/usr/bin:/sbin:/usr/sbin
    
    # # DON'T FORGET TO CHANGE THE PATH TO YOUR NEEDS!
    DIR=/home/css
    
    DAEMON=srcds_run
    
    # LAN server:
    # PARAMS="-game cstrike -nomaster -insecure +sv_lan 1 +maxplayers 16 +map de_dust"
    # Internet server:
    PARAMS="-game cstrike +ip xxx.xxx.xxx.xxx +port 27015 +map de_dust2 +maxplayers 16 -tickrate 100"
    
    NAME=cssserver
    DESC="CS:S dedicated server"
    
    # No edits (should be) necessary beyond this line
    
    if [ ! -x `which awk` ]; then echo "You need awk for this script"; exit 1; fi
    if [ ! -x `which screen` ]; then echo "You need screen (the program, moron!) for this script"; exit 1; fi
    
    if [ `whoami` = root ]
    then
     usagetype=root
    else
     usagetype=nonroot
    fi
    
    start() {
     if [ ! -d $DIR ]; then echo " ... No such directory: $DIR!"; exit 1; fi
     if [ ! -x $DIR/$DAEMON ]; then echo "$DIR/$DAEMON does not exist or is not executable!"; exit 1; fi
     if status; then echo " ... $DESC: $NAME is already running!"; exit 1; fi
    
     case "$usagetype" in
     root)
     su - $CS_USER -c "cd $DIR ; screen -AmdS $NAME ./$DAEMON $PARAMS"
     ;;
     nonroot)
     cd $DIR ; screen -AmdS $NAME ./$DAEMON $PARAMS
     ;;
     esac
    
    }
    
    stop () {
     if ! status; then echo " ... $DESC $NAME could not be found. Probably not running."; exit 1; fi
    
     case "$usagetype" in
     root)
     tmp=$(su - $CS_USER -c "screen -ls" | awk -F . "\$2 ~ /^$NAME[[:space:]].*/ {print \$1}" | awk '{print $1}')
     su - $CS_USER -c "screen -r $tmp -X quit"
     ;;
     nonroot)
     screen -r $(screen -ls | awk -F . "\$2 ~ /^$NAME[[:space:]].*/ {print \$1}" | awk '{print $1}') -X quit
     ;;
     esac
    }
    
    status () {
     case "$usagetype" in
     root)
     su - $CS_USER -c "screen -ls" | grep [.]$NAME[[:space:]] > /dev/null
     ;;
     nonroot)
     screen -ls | grep [.]$NAME[[:space:]] > /dev/null
     ;;
     esac
    }
    
    watch () {
     if ! status; then echo "$DESC $NAME could not be found. Probably not running."; exit 1; fi
    
     case "$usagetype" in
     root)
     tmp=$(su - $CS_USER -c "screen -ls" | awk -F . "\$2 ~ /^$NAME[[:space:]].*/ {print \$1}" | awk '{print $1}')
     su - $CS_USER -c "screen -r $tmp"
     ;;
     nonroot)
     screen -r $(screen -ls | awk -F . "\$2 ~ /^$NAME[[:space:]].*/ {print \$1}" | awk '{print $1}')
     ;;
     esac
    }
    
    case "$1" in
     start)
     echo "Starting $DESC: $NAME"
     start
     echo " ... done."
     ;;
    
     stop)
     echo "Stopping $DESC: $NAME"
     stop
     echo " ... done."
     ;;
    
     restart)
     echo "Restarting $DESC: $NAME"
     status && stop
     start
     echo " ... done."
     ;;
    
     status)
     if status
     then echo "$DESC: $NAME is UP" 
     else echo "$DESC: $NAME is DOWN"
     fi
     ;;
     watch)
     watch
     ;;
    
     *)
     echo "Usage: $0 {start|stop|status|restart|watch}\nWhile watching press ctrl-a, ctrl-d to stop watching without stopping the server."
     exit 1
     ;;
    
    esac
    
    
    exit 0
    
    Ich habe also alles für meine Ansprüche geändert, den User, den Pfad zur srcds_run sowie die Startparameter. Das Script habe ich in srcds umbenannt u. einfach in den /home/css ordner kopiert. Ab hier besteht nun auch das problem! Was muss noch gemacht werden oder besser wie kann ich dieses nun ausführen?
     
  2. 4. Februar 2010
    AW: CS:S Startscript einrichten

    mit sh ./"scriptname"
    musst dann natürlich schon im Ordner /home/css sein da es ein relativer Pfad ist
     
  3. 5. Februar 2010
    AW: CS:S Startscript einrichten

    wofür ist der Befehl sh ./ ?

    Wenn ich sh ./srcds ausführe bekomme ich zumindest schonmal die Anzeige was ich alles machen kann. Start,Stop,Watch,Restart...
    Wenn ich dann sh ./srcds Start mache kommt folgendes:

    Starting CS:S dedicated server: cssserver
    ... No such directory: /srcds!
     
  4. 5. Februar 2010
    AW: CS:S Startscript einrichten

    scheinbar muss der srcds ordner im /home/css ordner liegen, sonst scheint das nicht zu klappen (wenn ich das hier grade richtig sehe). stell mal bitte klar, in welchem dir du dich befindest und wo deine ordner sind...mfg coach
     
  5. 5. Februar 2010
    AW: CS:S Startscript einrichten

    Also Homeverzeichniss des Benutzers ist /home/css. Dort befinden sich auch alle Ordner inkl. Datein die für den CS:S Server erforderlich sind.
    Das script, also die Datei srcds befindet sich ebenfalls im /home/css dir.
     
  6. 6. Februar 2010
    AW: CS:S Startscript einrichten

    keiner ne ahnung?
     
  7. 10. Februar 2010
    AW: CS:S Startscript einrichten

    Code:
    # Now you can link the script to your runlevel-dir, here's an example for runlevel 3:
    # ln -s /etc/rc.d/init.d/srcds /etc/rc.d/rc3.d/S90srcds
    # ln -s /etc/rc.d/init.d/srcds /etc/rc.d/rc3.d/K50srcds
    # or use update-rc.d if you got a system using that tool (like Debian, see manpage)
    #
    # Or use it manually like:
    # ./srcds start
    # ./srcds stop
    Steht doch da wie du es starten kannst?
    Sprich du kannst einen symbolischen Link in ein Runlevel (hier 3, was auch eigentlich sinnvoll ist) auswählen und es zu deinen Skript verweisen

    oder du startest das ganze Manuell mit ./ das zum Ausführen von Bash-Skripten steht!
    anschließend kannst du wie in dem Skript ebenfalls definiert die startparameter übergeben..

    Sollte nun funktionieren... Ansonsten wenn du es startest und eine Fehlermeldung kommt poste die doch mal bitte hier rein! Ansonsten vllt mal die Rechte anpassen!


    LG 3x3x3x3
     
  8. 10. Februar 2010
    AW: CS:S Startscript einrichten

    also noch einmal von vorne.
    Habe mir das im ersten post genannte script gezogen und auf meine Bedürfnisse geändert. Die Datei von srcds.txt in srcds umbenannt. Diese in das Verzeichniss /home/css kopiert
    Wenn ich nun in putty einlogge mache ich folgendes:

    su css : Wechsle auf den user der den css server starten soll
    cd /home/css: in das verzeichniss wechseln in der die srcds enthalten ist.
    dann ./srcds

    Danach bekomme ich folgende Fehlermeldung:

    ./srcds: /bin/bash^M: bad interpreter: No such file or directory

    Rechte habe ich gesetzt mit chmod u=rwx /home/css/srcds
     
  9. 10. Februar 2010
    AW: CS:S Startscript einrichten

    Code:
    ./srcds: /bin/bash^M: bad interpreter: No such file or directory
    Das weißt daraufhin, dass du die Windows-Zeilenumbrüche in der Datei hast (weil du sie z.B. lokal bearbeitet hast).

    Bei windows sieht ein Zeilenumbruch so aus: "\r\n". Das \r steht für einen Wagenrücklauf und das \n für das Neue-Zeile-Zeichen (Natürlich sind die Zeichen in echt nicht druckbar. \r udn \n ist einfach nur die Darstellung, z.b. in der Bash).
    Bei linux bestehen die Zeilenumbrüche jedoch nur aus "\n". Für Linux sieht die Zeile also wie folgt aus: "#! /bin/bash\r". Und eine solche Datei gibts nunmal nicht

    Du musst also alle \r\n-Zeilenumbrüche in \n-Umbrüche umwandeln. Dazu gibts ein Utility namens dos2unix:
    Code:
    $ dos2unix script.sh
     
  10. 10. Februar 2010
    AW: CS:S Startscript einrichten

    Vom Script hab ich keine Ahnung aber ich wollte was anderes gerne fragen...

    Hast du mind. ne Standleitung um vernünftig auf dem Server spielen zu können..!?
     
  11. 10. Februar 2010
    AW: CS:S Startscript einrichten

    Ok, alles klar, habe das script nun einfach im Editor von Ubuntu selbst geschrieben. Funktioniert nun! Server dient lediglich als Lanserver bzw. Versuch Ihn später auf einem echtem Root zu betreiben!
     
  12. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.