StartScript für Serverprogramm

V

van_haakonnen

Jungspund
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
 
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
 
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:
 
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
 
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 :]
 
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]
 
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
 
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 :)
 

Ähnliche Themen

script sshpass

Verschlüsseltes Backup-Script mit rsync

Nginx als Reverse Proxy für Nextcloud und Emby

ip6tables Problem

Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich

Zurück
Oben