I hadn't worked on my demo for almost a year NUKI. Today I have time to fix things because there were a lot of things that were not quite good. I added some new functionality. I rearranged the code, with more features so I shortened it and it became clearer.

The main new functionality I introduced is the signal trap. At some point as the demon rotates the dreambox the receiver decides to kill it and thus stops monitoring my process, which in itself is a rather unpleasant moment. And I can't figure out what's going on because the space for logs is ungodly small and I have to make complex schemes with network sharing that I don't care about.. In general, the signal trap is a nice feature of bash scripts to intercept signals from outputs or those sent to them by the kernel via kill say 😉 and thus we can prevent some of the immediate subsequent events. Just insert that SIGKIL or kill -9 it cannot be intercepted and prevented, so is the design in the kernel. It terminates the PID submitted to it directly. Now the corresponding code

#trapping signals I know -9 dosent work but we try it just in case ; )
trap on_exit 0 14 1 2 9 13 15 6 8 4 3 11 5
on_exit () {
make_debug 10 #unexpected error
#reboot now if we hawe trapped signal
reboot -d 0
exit 0
}

The first line tells us what action to take and at which signals we will intercept more for the signals. man signals 😉 In this case, I am interested in these. As you can see, they lead to a simple function that debugs a message and restarts the receiver. I'm not having lunch, that will lead to the result I expect, because I think all that interferes is killing with kill -9 but nothing prevents it from being tried.

The other drastic changes are the features most things that are repeated by the code I pushed them into functions, that was a little awkward to watch no, that is now de 😉 I had a slight drama with return in bash – I put my return in one function and expect behavior like all other programming languages ​​I know, but it turned out that return returns only integer values ​​and that maximum 2 😀 and I wanted to return my string. There was an ugly pig. The solution to the problem is simple

#---cuted---

if [ $T -eq $N ]
 then
 echo "Cam is down! Reboot..."
make_debug 4 # cam is down
 else
echo $rcam
 fi

# ---cuted----

#finding real cam1
 rcam1=$(find_cam $cam1)

The first part is the end of my function and through echo I spit out the result. Taking it is elementary with the last line in the upper passage.

Hmmm I think, that this is the interesting part of the code.

I want to thank her for her inspiration

http://www.youtube.com/watch?= the SilMJ0O13UI&feature=related