Digital TV Forums - БЪЛГАРСКИЯТ ФОРУМ ЗА ЦИФРОВА ТЕЛЕВИЗИЯ

Digital TV Forums - БЪЛГАРСКИЯТ ФОРУМ ЗА ЦИФРОВА ТЕЛЕВИЗИЯ (http://www.dtv-bg.com/index.php)
-   MPCS/OScam (http://www.dtv-bg.com/forumdisplay.php?f=229)
-   -   oscam скрипт anti-killing (http://www.dtv-bg.com/showthread.php?t=42754)

... 21-08-2017 12:00

oscam скрипт anti-killing
 
Здравейте. Искам да си направя скрипт който да стартира оскама след като се е килнал поради някаква причина. Скрипта е с име oscam.check , задал съм му права 755 и съм го сложил в папка /etc/oscam.check
Bin файла на oscam се намира в папка /usr/bin/oscam , съответно и бин файла с права 755
Във файла oscam.config съм задал оскама да генерира log файл в папка /tmp/oscam.log
Та с две думи това го пробвах, но не действа при мен нещо. В crondtab съм задал времето за което да се стартира скрипта. Всяка минута и съответно пътя до скрипта като root. Ако можете да помогнете да се справя с този проблем. Скрипта може да изглежда и по друг начин, това не е от значение. Важно е да ми активира оскама след като се килне.
Сървър ubuntu 14.04 x64 ако това е от значение за скрипта.

PHP код:

#!/bin/sh 
process=`ps auxwww | grep oscam | grep -v grep | awk '{print $1}'`
if [ -
"$process]; then
echo "Couldn't find oscam running. Restarting server-binary" >> /etc/oscam.check 
echo && date >>/etc/.check
/usr/bin/oscam >> /tmp/oscam.log 
else echo 
"oscam is still OK!" >> /etc/oscam.check 
fi 

PHP код:

*/* * * * root /etc/./oscam.check 


... 21-08-2017 13:00

Този скрипт не трябва да се интересува от пътя до конфизите защото те не са изпълними файлове. Той трябва да се интересува от log файла. Спрат ли логовете би трябвало да стане ясно за скрипта, че оскама е забил.

Чък Норис 21-08-2017 13:44

monit

tok82 21-08-2017 14:44

nano /etc/init.d/oscam
------------------------------------------------------------------------
#!/bin/sh

### BEGIN INIT INFO
# Provides: oscam
# Required-Start: $network $syslog
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: OSCam
# Description: OSCam: Open Source CAM
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin

. /lib/lsb/init-functions

NAME="OSCam"
PROGRAM="/usr/local/bin/oscam"
OPTIONS="-b --pidfile /run/oscam.pid"
DESCR="OSCam: Open Source CAM"

if [ -r /etc/default/$NAME ]; then
. /etc/default/$NAME
fi

case "$1" in
start)
log_daemon_msg "Starting $DESCR"
STATUS=`ps ax | awk '$5 == "/usr/local/bin/oscam" { print $1 }'`
if [ -z "${STATUS}" ]; then
$PROGRAM $OPTIONS
res=0
else
res=1
fi
case "$res" in
0) log_end_msg 0 ;;
1) log_progress_msg "already started"
log_end_msg 0 ;;
*) log_end_msg 1 ;;
esac

;;
stop)
log_daemon_msg "Stopping $DESCR"
SRV_STATUS=`ps ax | awk '$5 == "/usr/local/bin/oscam" { print $1 }'`
if [ -n "${SRV_STATUS}" ]; then

# stop OSCam
for PID in $SRV_STATUS; do
kill -KILL $PID
done
rm /run/oscam.pid
res=0
else
res=1
fi
case "$res" in
0) log_end_msg 0 ;;
1) log_progress_msg "already stopped"
log_end_msg 0 ;;
*) log_end_msg 1 ;;
esac

;;
restart)
$0 stop
sleep 1
$0 start
;;
status)
status_of_proc "$PROGRAM" "$NAME" && exit 0 || exit $?
;;
*)
log_success_msg "Usage: /etc/init.d/pppoe-server {start|stop|restart|status}"
exit 1
;;
esac
exit 0

това работи на 100%

spaice 21-08-2017 14:46

Цитирай:

Първоначално написано от ... (Мнение459385)
Здравейте. Искам да си направя скрипт който да стартира оскама след като се е килнал поради някаква причина. Скрипта е с име oscam.check , задал съм му права 755 и съм го сложил в папка /etc/oscam.check
Bin файла на oscam се намира в папка /usr/bin/oscam , съответно и бин файла с права 755
Във файла oscam.config съм задал оскама да генерира log файл в папка /tmp/oscam.log
Та с две думи това го пробвах, но не действа при мен нещо. В crondtab съм задал времето за което да се стартира скрипта. Всяка минута и съответно пътя до скрипта като root. Ако можете да помогнете да се справя с този проблем. Скрипта може да изглежда и по друг начин, това не е от значение. Важно е да ми активира оскама след като се килне.
Сървър ubuntu 14.04 x64 ако това е от значение за скрипта.

PHP код:

#!/bin/sh 
process=`ps auxwww | grep oscam | grep -v grep | awk '{print $1}'`
if [ -
"$process]; then
echo "Couldn't find oscam running. Restarting server-binary" >> /etc/oscam.check 
echo && date >>/etc/.check
/usr/bin/oscam >> /tmp/oscam.log 
else echo 
"oscam is still OK!" >> /etc/oscam.check 
fi 

PHP код:

*/* * * * root /etc/./oscam.check 


Нормално е този скрипт да не действа.
1. Скрипта е в папка /etc/oscam.check. По средата на изпълнението му се опитва да пише в себе си:
PHP код:

echo "Couldn't find oscam running. Restarting server-binary" >> /etc/oscam.check 

Малко по-късно пак:
PHP код:

else echo "oscam is still OK!" >> /etc/oscam.check 



2. При старта на оскам пренасочваш изхода от оскам към лог.

PHP код:

/usr/bin/oscam >> /tmp/oscam.log 

По-правилно би било да се изпълни нещо подобно:
PHP код:

/usr/local/bin/oscam --r 2 -/usr/local/etc/oscam -/tmp/.oscam 

Точния синтаксис на командата може да видиш от изпълнението на
PHP код:

ps auxwww grep oscam 

Добра практика е потребителските скриптове да се намират в /usr/local/bin.
Логовете да са в /var/log/.
Добре ще бъде името на скрипта да не съдържа думата oscam.

И накрая: не знам дали изобщо ще ти е необходим този скрипт ако стартираш oscam с опцията
PHP код:

-r 2 

П.П. При изпълненито от крона пак има несъотвествие:
PHP код:

*/* * * * root /etc/./oscam.check 


Би трябвало да е:
PHP код:

*/* * * * root /etc/oscam.check 


sky2 21-08-2017 15:28

@spaice
Същото написах преди час по-горе. Във втория пост, добавих и готов скрипт от работеща машина с няколко емулатора. Но, колегата изрази съмнение, че това е правилно, и реших да ги махна за да не "подвеждаме" хората.

... 21-08-2017 15:34

Цитирай:

Първоначално написано от tok82 (Мнение459409)
nano /etc/init.d/oscam
------------------------------------------------------------------------
#!/bin/sh

### BEGIN INIT INFO
# Provides: oscam
# Required-Start: $network $syslog
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: OSCam
# Description: OSCam: Open Source CAM
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin

. /lib/lsb/init-functions

NAME="OSCam"
PROGRAM="/usr/local/bin/oscam"
OPTIONS="-b --pidfile /run/oscam.pid"
DESCR="OSCam: Open Source CAM"

if [ -r /etc/default/$NAME ]; then
. /etc/default/$NAME
fi

case "$1" in
start)
log_daemon_msg "Starting $DESCR"
STATUS=`ps ax | awk '$5 == "/usr/local/bin/oscam" { print $1 }'`
if [ -z "${STATUS}" ]; then
$PROGRAM $OPTIONS
res=0
else
res=1
fi
case "$res" in
0) log_end_msg 0 ;;
1) log_progress_msg "already started"
log_end_msg 0 ;;
*) log_end_msg 1 ;;
esac

;;
stop)
log_daemon_msg "Stopping $DESCR"
SRV_STATUS=`ps ax | awk '$5 == "/usr/local/bin/oscam" { print $1 }'`
if [ -n "${SRV_STATUS}" ]; then

# stop OSCam
for PID in $SRV_STATUS; do
kill -KILL $PID
done
rm /run/oscam.pid
res=0
else
res=1
fi
case "$res" in
0) log_end_msg 0 ;;
1) log_progress_msg "already stopped"
log_end_msg 0 ;;
*) log_end_msg 1 ;;
esac

;;
restart)
$0 stop
sleep 1
$0 start
;;
status)
status_of_proc "$PROGRAM" "$NAME" && exit 0 || exit $?
;;
*)
log_success_msg "Usage: /etc/init.d/pppoe-server {start|stop|restart|status}"
exit 1
;;
esac
exit 0

това работи на 100%


Така като гледам е необходимо само да задам в oscam.config файла
oscam.pid да се активира в папка /run/oscam.pid. И да оправя пътя на скрипта до моя oscam bin файл, който е /usr/bin/oscam. При твоя вариант не е необходимо в crond да се активира време за старт на скрипта? Също така срипта ти се намира в /etc/init.d/oscam му е името. Довечера ще го пробвам и ще пиша.

рйонков 21-08-2017 15:50

Ползвай "pidof" за ориентир! Работи най-бързо ;;650

emu_run=`pidof -s $emu_name`

после проверка дали го има и си ти ;)

Момчил Минков 21-08-2017 15:59

Цитирай:

Първоначално написано от ... (Мнение459415)
Така като гледам... Довечера ще го пробвам и ще пиша.

Колега, писано и изписано е доста, просто трябваше да ползваш търсачка (както на форума, така и на Гугъл). Ако толкова искаш да си блъскаш главата, има къде-къде по интересни насоки - виж подписа ми
(приятелска закачка) ;;650

spaice 21-08-2017 16:19

Цитирай:

Първоначално написано от sky2 (Мнение459414)
@spaice
Същото написах преди час по-горе. Във втория пост, добавих и готов скрипт от работеща машина с няколко емулатора. Но, колегата изрази съмнение, че това е правилно, и реших да ги махна за да не "подвеждаме" хората.

Сори, не съм видял постовете.

Не разбрах кое е подвеждащото? Посочил съм грешките. Ако и ти си направил същото, значи няма подвеждане.


Всички времена са във формат GMT +3. Часът е 16:58.

DTV-BG Powered by vBulletin Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.