Перейти к содержимому


Фотография
- - - - -

Перезагружаем mgcamd на dreambox 500s при выходе из режима StandBy


  • Закрытая тема Тема закрыта
В теме одно сообщение

#1 Romeo

Romeo

    Постоялец

  • Пользователи
  • 14
  • 443 сообщений
  • 0 thanks

Отправлено 29 June 2011 - 00:23

Написать данный скрипт меня побудил одно обстоятельство. Поставил я одному знакомому dreambox 500s. Знакомый хороший, но с техникой на вы. Однажды звонит мне и жалуется на неработающий ресивер. Я приезжаю к ему. Нажимаю синюю кнопку. Жму restart Auto-Cam. Все работает. Я в душе проматерился и поехал домой писать данный скрипт.
Первым делом выяснил какие скрипты запускаются при нажатии на кнопку StandBy. Вот эти красавцы enigma_enter_standby.sh и enigma_leave_standby.sh. Файл enigma_enter_standby.sh запускается когда вы выключаете ресивер. Соответственно enigma_leave_standby.sh при включении.
Чтобу перезагрузить эмулятор нужно сначала убить его killall -9 mgcamd, а затем заново запустить /var/bin/mgcamd &. Но проблема в том, что эмулятор может называться по разному: mgcamd, mgcamd1.35, mgcamd_1.35a и т.д. Есть пара способов как это выяснить. Заходим telnet-ом в ресивер. Пишем каманду ps -a. В открывшемся списке ищем чтото похожее на /var/bin/mgcamd1.35. /var/bin/ – путь до эмулятора mgcamd1.35 – файл эмулятора. Можно визуально через любой FTP клиент посмотреть какой эмулятор лежит в папке /var/bin/. После того как мы все узнали приступаем к созданию скрипта.

Пишем конфигурационный файл /var/script/restartemu.conf:

EMU_NAME=mgcamd_1.35         # Имя файла эмулятора
EMU_DIR=/var/bin                   # Путь к файлу эмулятора
SLEEP_TIME=1                       # Пауза между убиством процесса и стартом
MESSAGE=on                         # Выводить ли сообщение о перезагрузке эмулятора
KILL_EMU=off                       #Когда убивать процесс. off – при выключении ресивера on – при включении
LOGIN=root                         # Логин и пароль от dreambox
PASS=dreambox

# удаляем все логи  из папки tmp

remove_mgcamd_tmp(){
rm -rf  /tmp/*mgcamd*
}

Теперь пишем сами скрипты. Создаем в папке /var/script/ файл start_emu.sh со следующим содержанием

#!/bin/sh
CONF=/var/script/restartemu.conf

# проверяем существование конфигурационного файла и загружаем его
if [ ! -f $CONF ]; then
echo «ERROR: Config ‘$CONF’ not exists. Program aborted.»
exit 1
fi
. $CONF

#проверяем существование  файла эмулятора

if [ -x $EMU_DIR/$EMU_NAME ]; then

# Если переменная KILL_EMU стоит «on» то убиваем процесс эмулятора

if [ $KILL_EMU = "on" ]; then
killall -9 $EMU_NAME
sleep 1
fi
remove_mgcamd_tmp # удаляем логи
sleep $SLEEP_TIME # делаем паузу перез запуском эмулятора
$EMU_DIR/$EMU_NAME & # запускаем эмулятор

# выводим сообщение

if [ $MESSAGE = "on" ]; then
wget -q -O – http://$LOGIN:[email protected]/cgi-bin/message?Restart%20$EMU_NAME
fi

else
echo «ERROR: Emu ‘$EMU_DIR/$EMU_NAME’ not exists. Program aborted.»
fi

exit 1

Теперь пишем скрипт stop_emu.sh. И помещаем его в /var/script/

#!/bin/sh
CONF=/var/script/restartemu.conf

# проверяем существование конфигурационного файла и загружаем его
if [ ! -f $CONF ]; then
echo «ERROR: Config ‘$CONF’ not exists. Program aborted.»
exit 1
fi
. $CONF

# Если переменная KILL_EMU стоит «off» то убиваем процесс эмулятора

if [ $KILL_EMU = "off" ]; then
killall -9 $EMU_NAME
fi

exit 1

Теперь запустим эти скрипты в нужный момент. Как я говорил выше нам нужны /var/etc/enigma_enter_standby.sh и /var/etc/enigma_leave_standby.sh.

enigma_enter_standby.sh

#!/bin/sh
/var/script/stop_emu.sh &  # запускаем файл stop_emu.sh при выключении ресивера

enigma_leave_standby.sh

#!/bin/sh
/var/script/start_emu.sh &   # запускаем файл start_emu.sh при включении ресивера

Осталось самая малость – назначить CHMOD-ы. Для файлов enigma_enter_standby.sh, enigma_leave_standby.sh, start_emu.sh, stop_emu.sh ставим 755. Файлу restartemu.conf ставим CHMOD 644.

#2 compaqcompaq

compaqcompaq

    Участник

  • Пользователи
  • PipPipPip
  • 10
  • 65 сообщений
  • 0 thanks

Отправлено 03 July 2011 - 11:12

можно и попроще...

для оскама например (смотрим как называется скрипт запуска эмуля в var/script)

в var/etc/enigma_leave_standby.sh

#!/bin/sh
/var/script/oscam_cam.sh start


в var/etc/enigma_enter_standby.sh

#!/bin/sh
/var/script/oscam_cam.sh stop

или для мгкамда например...

в var/etc/enigma_leave_standby.sh

#!/bin/sh
/var/script/mgcamd_1.35a_cam.sh start


в var/etc/enigma_enter_standby.sh

#!/bin/sh
/var/script/mgcamd_1.35a_cam.sh stop




Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных