Script

Supportfrågor för Switch King i Linux-miljö
Forum rules
För att kunna hjälpa dig med supportfrågor behöver vi så mycket information som möjligt.
Innan du skapar en ny tråd, läs gärna:
viewtopic.php?f=10&t=20
Martin
Administrator
Administrator
Posts: 2655
Joined: Tue 09 Nov 2010, 20:25

Script

Post by Martin » Mon 28 Nov 2011, 15:26

Om någon Linux-kunnig person har möjlighet att hjälpa till med att skapa någon form av skript för att fixa automatisk uppstart osv av Switch King på Linux så vore det fantastiskt trevligt :wave:
Martin | Switch King

nilzen
2 stars
2 stars
Posts: 49
Joined: Sat 26 Nov 2011, 19:27

Re: Script

Post by nilzen » Mon 28 Nov 2011, 19:01

Jag kör med scriptet, den startar upp deamon:en dock så verkar den aldrig "köra klart", vet inte om det är ett problem med scriptet eller deamon-implementationen i SK. Någon annan som kan sprida lite ljus i frågan?

Code: Select all

#!/bin/sh

### BEGIN INIT INFO
# Provides:             switchking
# Required-Start:       $network $syslog
# Required-Stop:        $network $syslog
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Start and stop Switch King
# Description:          Switch King init script. This script starts and stops Switch King daemon.
### END INIT INFO

set -e
export MONO_LOG_LEVEL=info
export MONO_LOG_MASK="dll,config"

# Must be a valid filename
NAME=switchking
PIDFILE=/var/run/$NAME.pid
#This is the command to be run, give the full pathname
DAEMON=/usr/bin/mono
DAEMON_OPTS="/usr/local/switchking/bin/SwitchKing.exe daemon 192.168.69.5 8080 192.168.69.5 8800"

case "$1" in
  start)
        echo -n "Starting daemon: "$NAME
   start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS
        echo "."
   ;;
  stop)
        echo -n "Stopping daemon: "$NAME
   start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
        echo "."
   ;;
  restart)
        echo -n "Restarting daemon: "$NAME
   start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $PIDFILE
   start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS
   echo "."
   ;;

  *)
   echo "Usage: "$1" {start|stop|restart}"
   exit 1
esac

exit 0

nilzen
2 stars
2 stars
Posts: 49
Joined: Sat 26 Nov 2011, 19:27

Re: Script

Post by nilzen » Mon 28 Nov 2011, 19:03

hrm sekunderna efter jag postade hittade jag detta felmeddelande:

Code: Select all

Unhandled Exception: SwitchKing.Server.BusinessAccess.PlatformStore.PlatformStateException: Failed to turn off device. Error: Could not connect to the Telldus Service
  at SwitchKing.Server.BusinessAccess.Invocation.Engines.InvocationEngine.TurnOff (SwitchKing.Common.Entities.Device d) [0x00000] in <filename unknown>:0 
  at SwitchKing.Server.BusinessAccess.Invocation.Engines.InvocationEngine.PerformAction (DeviceActionEntry entry) [0x00000] in <filename unknown>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: SwitchKing.Server.BusinessAccess.PlatformStore.PlatformStateException: Failed to turn off device. Error: Could not connect to the Telldus Service
Verkar som jag får googla lite på Required-Start, som vad jag förstår är en rad med de services som måste vara startade innan detta script ska köras, korrekt?

nilzen
2 stars
2 stars
Posts: 49
Joined: Sat 26 Nov 2011, 19:27

Re: Script

Post by nilzen » Mon 28 Nov 2011, 20:45

Efter lite trixande i hockeypauserna så lärde jag mig lite om hur det fungerar med startup-script i Linux.

Allt detta gäller Ubuntu 10.04 men som jag förstår det ska det även fungera i nyare versioner av Ubuntu.

Om någon mer har samma problem som mig och får felmeddelandet ovan i "/var/log/boot.log" och har registrerat scriptet med "update-rc.d switchking default" så behöver två saker göras.

1. Ta reda på vilken runlevel din maskin bootas upp med och det gör man genom att titta i filen "/etc/init/rc-sysinit.conf", för mig står det "env DEFAULT_RUNLEVEL=2".

2. Kontrollera ordningen switchking och telldusd startas i genom att titta i mappen "/etc/rc2.d/" (där 2:an är siffran som står efter "DEFAULT_RUNLEVEL=", alla filer (symlänkar) i den mappen som börjar med S körs i bokstavsordning, för mig så började både telldusd och switchking på S20 vilket gjorde att switchking startades före telldusd. Löste detta genom att köra kommandot "sudo mv /etc/rc2.d/S20switchking /etc/rc2.d/S30switchking" och sedan boota om maskinen.

Dock så tror jag fortfarande att något är galet med daemon-läget i SK då det inte skrivs något mer i loggen efter "REST Service Running" och jag har saker med högre nummer än S30 och som jag tycker borde skriva ngt i loggen.

nilzen
2 stars
2 stars
Posts: 49
Joined: Sat 26 Nov 2011, 19:27

Re: Script

Post by nilzen » Mon 28 Nov 2011, 21:30

Efter lite mer tweakande så hittade jag "mono-service2" vilket gör att den inte blockerar efterföljande service från att starta upp.

Code: Select all

DAEMON=/usr/bin/mono-service2

nilzen
2 stars
2 stars
Posts: 49
Joined: Sat 26 Nov 2011, 19:27

Re: Script

Post by nilzen » Mon 28 Nov 2011, 22:06

Logga in på Ubuntu och skriv:

Code: Select all

sudo nano /etc/init.d/switchking
Klistra in koden:

Code: Select all

#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON_NAME=SwitchKing
DAEMON_PATH=/usr/local/switchking/bin/$DAEMON_NAME.exe
DAEMON_ARGS="daemon 192.168.69.5 8080 192.168.69.5 8800"
LOCKFILE=/tmp/$DAEMON_NAME.exe.lock
PIDFILE=/tmp/$DAEMON_NAME.exe.pid

start()
{
    echo -n "Starting daemon: "
    if [ -a $LOCKFILE ]; then
            PID=`cat $LOCKFILE`
            echo  Daemon already running: $PID
            exit 2;
    else
            mono-service2 -l:$LOCKFILE $DAEMON_PATH $DAEMON_ARGS
            while [ ! -f $LOCKFILE ]
                 do
                    sleep 1
                    echo "Waiting for lock file creation"
                 done
            cat $LOCKFILE > $PIDFILE
            echo "started."
            exit 0;
    fi
}

stop()
{
    echo -n "Stopping  daemon: "
    if [ -f $LOCKFILE ]; then
            kill `cat $PIDFILE`
            # Sometimes the mono-service2 does not die properly
            # To avoid a zombie process we make sure it is dead
            kill -9 `cat $PIDFILE`
            sleep 2
            if [ -f $LOCKFILE ]; then
                rm $LOCKFILE
            fi
            echo "Stopped."
            exit 0;
    else
            echo "Daemon is not running"
            exit 2;
    fi
}

case "$1" in 
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo "usage: $0 {start|stop|restart}"
        exit 1

esac
exit $?
Kör följande två kommandon för att registrera scriptet som ett init-script.

Code: Select all

sudo chmod +x /etc/init.d/switchking

Code: Select all

sudo update-rc.d switchking defaults 40
Starta om burken!

Om switchking inte startat upp kör följande kommando och leta efter felmeddelanden.

Code: Select all

cat /var/log/boot.log
Last edited by nilzen on Mon 05 Dec 2011, 15:14, edited 3 times in total.

Martin
Administrator
Administrator
Posts: 2655
Joined: Tue 09 Nov 2010, 20:25

Re: Script

Post by Martin » Mon 28 Nov 2011, 22:59

:clap: :clap: :clap:

Har tidigare läst på lite om monoservice2 men faktiskt inte fattat hur det ska fungera...
Martin | Switch King

nilzen
2 stars
2 stars
Posts: 49
Joined: Sat 26 Nov 2011, 19:27

Re: Script

Post by nilzen » Tue 29 Nov 2011, 07:47

Du kan gärna städa bort alla poster förutom den senaste så jag inte sprider vilseledande information till någon användare... Verkar som sagt fungera riktigt bra med scriptet ovan, även SwitchKing verkar rulla på bra på Ubuntu 10.04! :D

KungenAvPeking
3 stars
3 stars
Posts: 181
Joined: Tue 09 Nov 2010, 21:51

Re: Script

Post by KungenAvPeking » Sun 04 Dec 2011, 23:36

Ny här i beta delen av forumet...

Men ett tips är att redan i

Code: Select all

sudo update-rc.d switchking defaults
lägga till vilken ordning sakerna ska startas upp, genom att lägga till siffran 30 (eller högre om så behövs)

Code: Select all

sudo update-rc.d switchking defaults 30
(Telldus-core startas som 20 i min installation, OWFS ligger redan på 30, så själv lägger jag 40)

Är det så att man redan har lagt till, så kan man köra en

Code: Select all

sudo update-rc.d switchking remove
först och sedan lägga till i rätt ordning... ;)

nilzen
2 stars
2 stars
Posts: 49
Joined: Sat 26 Nov 2011, 19:27

Re: Script

Post by nilzen » Mon 05 Dec 2011, 15:14

Mitt första init-script någonsin så jag tackar och bockar för tipset!

Post Reply

Who is online

Users browsing this forum: No registered users and 9 guests