StartScript für Serverprogramm

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von van_haakonnen, 08.06.2006.

  1. #1 van_haakonnen, 08.06.2006
    van_haakonnen

    van_haakonnen Jungspund

    Dabei seit:
    04.01.2006
    Beiträge:
    11
    Zustimmungen:
    0
    Hallo,

    ich stehe vor einem kleinen Problem...

    Ich habe hier ein selbstgeschriebenes Startscript für "Big Brother". Hierbei handelt es sich um einen Monitoringdienst für Linux/Unix/Windows, etc...

    Der Server läuft auf einem HP-UX 11 Server.

    Die Startscripte liegen momentan in /sbin/init.d/

    Es gibt zwei Scripte... einmal zum Starten des Server und einmal für den Client...:

    Client:
    Code:
    #!/sbin/sh
    #
    # @(#) $Revision: 72.8 $
    #
    
    #
    # Start Big Brother client
    #
    
    PATH=/usr/sbin:/usr/bin:/sbin
    export PATH
    
    rval=0
    set_return() {
            x=$?
            if [ $x -ne 0 ]; then
                    echo "EXIT CODE: $x"
                    rval=1
            fi
    }
    
    case $1 in
    start_msg)
            echo "Start Big Brother Client"
            ;;
    
    stop_msg)
            echo "Stop Big Brother Client"
            ;;
    
    'start')
            if [ -f /etc/rc.config.d/bb ] ; then
                    . /etc/rc.config.d/bb
            else
                    echo "ERROR: /etc/rc.config.d/bb defaults file MISSING"
            fi
    
            if [ "$BBCLIENT" -eq 1 ]; then
                    su - bbuser /home/bbuser/bb18c1/runbb.sh start \
                    && echo "bbclient started"
                    set_return
            else
                    rval=2
            fi
            ;;
    
    'stop')
            bbrun_pid=`ps -e | awk '$NF=="bbrun" { print $1}'`
            if [ -n "$bbrun_pid" ]; then
                echo kill $bbrun_pid
                su - bbuser /home/bbuser/bb18c1/runbb.sh stop
            fi
            ;;
    
    *)
            echo "usage: $0 {start|stop}"
            ;;
    esac
    
    exit $rval
    
    Server:
    Code:
    #!/sbin/sh
    #
    # @(#) $Revision: 72.8 $
    #
    
    #
    # Start Big Brother Server
    #
    
    PATH=/usr/sbin:/usr/bin:/sbin
    export PATH
    
    rval=0
    set_return() {
            x=$?
            if [ $x -ne 0 ]; then
                    echo "EXIT CODE: $x"
                    rval=1
            fi
    }
    
    case $1 in
    start_msg)
            echo "Start Big Brother Server"
            ;;
    
    stop_msg)
            echo "Stop Big Brother Server"
            ;;
    
    'start')
            if [ -f /etc/rc.config.d/bb ] ; then
                    . /etc/rc.config.d/bb
            else
                    echo "ERROR: /etc/rc.config.d/bb defaults file MISSING"
            fi
    
            if [ "$BBCLIENT" -eq 1 ]; then
                    su - bbuser /home/bbuser/bb/runbb.sh start \
                    && echo "bbclient started"
                    set_return
            else
                    rval=2
            fi
            ;;
    
    'stop')
            bbrun_pid=`ps -e | awk '$NF=="bbrun" { print $1}'`
            if [ -n "$bbrun_pid" ]; then
                echo kill $bbrun_pid
                su - bbuser /home/bbuser/bb/runbb.sh stop
            fi
            ;;
    
    *)
            echo "usage: $0 {start|stop}"
            ;;
    esac
    
    exit $rval
    
    
    Jetzt ist es aber leider so, dass wenn man nur den Server neustartet, dass dann auch der Client mitbeendet wird... also irgendwie funktioniet das alles nicht richtig...

    Könnt ihr mir helfen ein Script zu schreiben, dass dann sowohl mit dem Client alsauch mit dem Server mittels Start | Stop | Restart umgehen kann?

    Also alles in einem Script... sodass immer beides gestartet, beendet oder neugestartet wird... :)

    Wäre super wenn ihr mir helfen könntet

    Vielen Dank im Voraus

    Van_Haakonnen
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. hmhweb

    hmhweb Mitglied

    Dabei seit:
    29.11.2004
    Beiträge:
    46
    Zustimmungen:
    0
    Hallo !

    Wenn ich die Skripte recht verstehe, suchst Du in beiden Skripten unter stop) nach bbrun in der Prozeßtabelle, um deren PIDs zu finden. Da sind halt alle dabei und werden gestoppt. Ev. in die Suche nach den PIDs noch die unterschiedlichen Pfadangaben (bb bzw. bb18c1) einbeziehen. Gleiche Namen machen es halt schwer.

    hmh
     
  4. #3 van_haakonnen, 08.06.2006
    van_haakonnen

    van_haakonnen Jungspund

    Dabei seit:
    04.01.2006
    Beiträge:
    11
    Zustimmungen:
    0
    Hi,

    danke für deine Antwort. Also beim Stoppen macht das ja jetzt nichts mehr.. ich möchte das Starten und Stoppen des Server ja in ein Script bauen... Also darf er beim Beenden ruhig alles beenden...

    Nur wie starte ich dann beide? Erst den Server und dann den Client... Irgendwie habe ich es soweit hinbekommen aber jetzt bin ich überfordert... Auch das neustarten... :think:
     
  5. hmhweb

    hmhweb Mitglied

    Dabei seit:
    29.11.2004
    Beiträge:
    46
    Zustimmungen:
    0
    Hallo noch mal !

    Ob es eine gute Idee ist, sowohl Client als auch Server über ein Start/Stopskript zu starten, weiß ich nicht (Ich würde separate Skripte bevorzugen).
    Da dies Skripte normalerweise als Übergabeoptionen nur so Kommandos wie start|stop|restart|reload|status usw. und jeweils nur eins akzeptieren und nicht noch zusätzlich client oder server, wären Start und Stop beider fest gekoppelt. Wenn Du das willst, merge einfach deine Skripte und lösche die doppelten Einträge :) , die Reihenfolge (server-client --- client server) spielt sicher auch eine Rolle. Und die Skripte hast Du ja.
    Oder versteh ich jetzt was falsch ?

    hmh
     
  6. #5 damager, 08.06.2006
    damager

    damager Moderator

    Dabei seit:
    27.08.2003
    Beiträge:
    3.065
    Zustimmungen:
    0
    Ort:
    Munich
    wie wäre es den mit einen neuen skript der im fall von start | stop | restart
    nicht anderes macht als die bereits vorhandenen skripte mit start, stop oder restart aufruft? verstehst was ich meine?

    als beispiel ein skript das eben z.b.
    /etc/init.d/bbserver stop
    und
    /etc/init.d/bbclient stop
    aufruft.

    nur ein beispiel:
    Code:
    #!/sbin/sh
    #
    # @(#) $Revision: 72.8 $
    #
    
    #
    # Start Big Brother Server / Client
    #
    
    PATH=/usr/sbin:/usr/bin:/sbin
    export PATH
    
    rval=0
    set_return() {
            x=$?
            if [ $x -ne 0 ]; then
                    echo "EXIT CODE: $x"
                    rval=1
            fi
    }
    
    case $1 in
    start_msg)
            echo "Start Big Brother Server and Client"
            ;;
    
    stop_msg)
            echo "Stop Big Brother Server and Client"
            ;;
    
    'start')
           	/etc/init.d/bbserver start
    	sleep 5
    	/etc/init.d/bbclient start   
    
    'stop')
    	/etc/init.d/bbserver stop
    	sleep 5
    	/etc/init.d/bbclient stop
    
    
    *)
            echo "usage: $0 {start|stop}"
            ;;
    esac
    
    exit $rval
    
    ein "restart" wäre ja leicht zu erweitern :]
     
  7. #6 van_haakonnen, 08.06.2006
    van_haakonnen

    van_haakonnen Jungspund

    Dabei seit:
    04.01.2006
    Beiträge:
    11
    Zustimmungen:
    0
    Hi Damager,

    ich habe es mal so versucht wie du geschrieben hast... Allerdings wäre mir ein neues Script, dass einfach alles beinhaltet lieber...

    Aber ich habe es mal so versucht und bekomme als Fehlermeldung:
    ./bigbrother[22]: Syntax error at line 40 : `)' is not expected.


    Code:
        1  #!/sbin/sh
         2  #
         3  # @(#) $Revision: 72.8 $
         4  #
         5
         6  #
         7  # Start Big Brother Server / Client
         8  #
         9
        10  PATH=/usr/sbin:/usr/bin:/sbin
        11  export PATH
        12
        13  rval=0
        14  set_return() {
        15          x=$?
        16          if [ $x -ne 0 ]; then
        17                  echo "EXIT CODE: $x"
        18                  rval=1
        19          fi
        20  }
        21
        22  case $1 in
        23  start_msg)
        24          echo "Start Big Brother Server and Client"
        25          ;;
        26
        27  stop_msg)
        28          echo "Stop Big Brother Server and Client"
        29          ;;
        30
        31  restart_msg)
        32          echo "Restart Big Brother Server and Client"
        33          ;;
        34
        35  'start')
        36          /sbin/init.d/bbserver start
        37          sleep 5
        38          /sbin/init.d/bbclient start
        39
        40  'stop')
        41          /sbin/init.d/bbserver stop
        42          sleep 5
        43          /sbin/init.d/bbclient stop
        44
        45  'restart')
        46          /sbin/init.d/bbserver stop
        47          sleep 5
        48          /sbin/init.d/bbclient stop
        49          sleep 5
        50          /sbin/init.d/bbserver start
        51          sleep 5
        52          /sbin/init.d/bbclient start
        53
        54  *)
        55          echo "usage: $0 {start|stop|restart}"
        56          ;;
        57  esac
        58
        59  exit $rval
    
    [B][/B]
    
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. #7 Wolfgang, 08.06.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Mir ist zwar immernoch nicht richtig klar, was du eigentlich willst.
    Gehe ich recht, dass die Scripte nicht von dir erstellt sind?

    Was möchtest du genau erreichen?
    Sorry, aber ich sehe was (deine?) Scripte machen, aber nicht wo dein Problem damit ist.
    Die Scripte machen ja nix weiter, als abhängig vom übergebenen Parameter ein weiteres Script zu starten oder zu stoppen.
    Wenn du nun mit einem Aufruf beide Scripte stoppen oder Starten willst, trägst du die eben beide bei den entsprechenden Optionen ein.
    Davor einfach prüfen, ob das Script existiert und ausführbar ist, bzw. dass es nicht noch läuft. Alles so wie in denen beiden Scripten demonstriert.


    Aber das o.g. Script kann so nicht laufen.
    Da fehlen die bei case nötigen um ;; sowohl bei stop) als auch start) und restart.
    ;)

    Gruß Wolfgang
     
  10. #8 van_haakonnen, 13.06.2006
    van_haakonnen

    van_haakonnen Jungspund

    Dabei seit:
    04.01.2006
    Beiträge:
    11
    Zustimmungen:
    0
    Entschuldigt, dass ich mich in den letzten Tagen nicht gemeldet habe... War nicht in der Arbeit..

    Ja, ist richtig... Das sind nicht meine Scripte... Ich hab mich nur dummerweise freiwillig dazu gemeldet mich darum zu kümmern... Und bin in meinem ersten Ausbildungsjahr damit doch noch etwas überfordert... :)

    Also... Es gibt ja zwei Möglichkeiten so wie ich das sehe...

    1) Man nimmt ein drittes Script, dass die anderen beiden Scripte nutzt zum Starten und Stoppen...

    2) Man schreibt EIN neues Script, dass das Starten und Stoppen ohne weitere Scripte kann

    Und ich hätte halt (weil es übersichtlicher ist und schöner aussieht) gerne ein neues Script, dass dann eigenständig das alles kann...

    Nur weiß ich halt nicht wo und wie ich das umbauen muss...

    Aber vielen Dank für eure Hilfe :)
     
Thema:

StartScript für Serverprogramm

Die Seite wird geladen...

StartScript für Serverprogramm - Ähnliche Themen

  1. Startscript für Gentooboot?

    Startscript für Gentooboot?: Moin Moin, ich wollte mal fragen ob es irgendwie möglich ist das ich ein script anlege wo ich befehle reinschreibe, die dann mit dem booten und...
  2. Startscript als User nicht als root ausführen

    Startscript als User nicht als root ausführen: Hallo Zusammen, wie es der Titel bereits andeutet, möchte ich ein Script als User und nicht als root starten. Leider funktioniert es nur als...
  3. Startscript in init.d scheitert an - " -

    Startscript in init.d scheitert an - " -: Hallo ich schon wieder ;) Ich starte in Debian lenny auf der Console den mjpg_streamer problemlos: /usr/bin/mjpg_streamer -b -i "input_uvc.so -d...
  4. Minecraft Startscript

    Minecraft Startscript: Ich finde den Fehler nicht. Als Fehler kommt: ./startserver: 73: [[: not foundUnd hier der Quellcode: #!/bin/sh DIR="/home/marok" DAEMON="java"...
  5. Runlevel+Startscript unter Ubuntu 10.04 Server x64

    Runlevel+Startscript unter Ubuntu 10.04 Server x64: Hallo Community, wie sich schon aus dem Titel unschwer erkennen lässt, habe ich ein Problem / eine Verständnisfrage bezüglich der Runlevel in...