Школа Linux для дримоводов

  • Courage


    обязательно попробую пересобрать, запасусь информацией что можно еще ввести туда полезного для меня, а то ради одного скрипта долго делать... но опыт обязательно получу - так как интересно :)


    zuriuslev


    Спасибо за совет засунул в /var/script/syslogd_script.sh путь к моему скрипту - все запускается

  • peon
    знаешь твоя писанина чем ценна - ты САМ прошел через нее !!! выстрадал!!!
    собственный опыт - наиглавнейшая вещь в постижении Линукс (ну и во всем
    другом тоже!)
    ты просто не знал про такую мелочь как ./ - знаешь сколько я мозгов сломал в свое время
    когда в меня плевалась операционка - файл не найден ))))
    зато и запомнилось на всю жизнь!
    и не стесняйтесь спрашивать - линуксоиды обычно с удовольствием ответят на вопросы
    пытливых новичков =) - а то что начинают ворчать при этом - так это такие правила игры 8)


    советую не останавливаться на достигнутом
    линукс = рулез ))))


    zuriuslev
    далеко ты новичков посылаешь )))) на 3 веселых буквы CDK ;)

  • Тогда вопрос на засыпку !


    Чем отличается в скрипте -
    . /var/etc/init
    от
    /var/etc/init


    Довольно важное и принципиальное отличие !
    :evil:

  • zuriuslev
    долго разглядывал есть ли пробел между точкой и слэшем в записи

    Исходный код
    . /var/etc/init


    вроде есть - и разглядев - честно скажу - не знаю ....
    а это был экзамен? 8o провалил значит его с треском :( ))))

  • Учиться никогда не поздно !


    Как происходит выполнение команд ?
    1. Если написано /var/etc/init , (или любая другая комманда),
    то сначала порождается новый шелл, и вот он и выполняет эту комманду.


    2. В случае . /var/etc/init, комманда выполняется в контексте текущего шелла.


    Это, например значит, что во втором случае мы имеем доступ ко всем переменным (environment variables), из скрипта родителя , а в первом случае только к глобальным (экспортированным через export)
    Это наглядно продемонстрировал free-x, чуть выше.


    Надеюсь не очень мудрено ?

    Сообщение было отредактировано 1 раз, последнее редактирование пользователем zuriuslev ().

  • zuriuslev
    спасибо - буду знать


    а по поводу учится - я никогда вроде и не отказывался )))))
    мне это дело даже нравится ))))


    у меня конечно тоже есть вопросы - но они вроде не в тему данного топика .....
    например - можно ли и если можно то как - прибить chroot и все что внем
    запущено изнутри самого chroot `этакое самоубийство + убийство родительского
    chroot //// 1не очень простой вопрос? :D

  • Цитата

    этакое самоубийство + убийство родительского chroot


    Я кажется догадываюсь, чего ты добиваешся . =)
    На са мом деле тебе не хватает понимания, роли процесса 0 и просесса 1 в Юникс.
    Мне кажется, тебе нужен свой сценарий init , а не все эти изгаления с chroot

  • прочитал и понял что более конкретно и точно формулировать задачку пожалуй не
    буду ....


    что такое процессы 0 и 1 не знаю -= я даже ЦПШ по *NIX системам не закончил ....
    pivot_root тоже из другой оперы ....
    интуитивно чувствую что решение есть где то в области собаководства - watch-dog
    в большой системе который бдит за чем нить в chroot и прибивает ея всю если что то
    там изменилось ....
    как всегда - стоит немного подумать - лучше на бумаге - и решение находишь сам ....

  • Есть мысль, в разделе СПУТНИКОВЫЙ ИНТЕРНЕТ НА ДРИМЕ я выкладывал инструкцию по созданию скрипта запуска спутникового интернета, да так чтобы он отображался и запускался из раздела PLUGINS, так вот я хочу внедрить в этот скрипт меню, чтобы при запуске скрипта получалось примерно так:
    1 - пид 412
    2 - пид 400
    3 - пид 500
    То есть при нажатии цифры на пульте дрима соответствующей нужному мне ПИДу, должен запуститься алгоритм его запуска.
    Когда-то я делал нечто подобное под ДОС в bat файлах, но там была команда .
    В связи с чем у меня возникает вопрос, есть ли под Linux аналогичные команды IF и GO TO?

    Сообщение было отредактировано 1 раз, последнее редактирование пользователем kulibin ().

  • kulibin
    найди тот скрипт и положи в этот топик - обсудим ////
    скриптовый язык bash очень развитый - думаю это возможно -
    к сожалению в дримбоксе не совсем полный bash - он в составе busybox идет -
    чего то в нем может и не быть ....


    и еще .... как ты вызов скрипта умудрился в меню плагинов положить?
    .... есть такой плагин shelltools там я делал-
    но на свежих имиджах он не работает (((( приходится скрипты через командер запускать
    в-общем клади в этот топик все идеи и скрипты - обсудим


    вот и хороший учебник
    Advanced Bash-Scripting Guide
    Искусство программирования на языке сценариев командной оболочки
    Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.

  • Запускал эму, кардсерверы, скрипты Card-info, самбу и т.д. в офф. имиджах
    Для примера Mgcamd+cardserver(newcamd)
    Создавал конфиг файл примерно такого содержания:


    start.cfg


    name=start
    desc=Start mgcamd
    type=3
    needfb=0
    needrc=0
    needlcd=0


    и сам скрипт запуска,


    start.sh


    /var/bin/mgcamd &
    /var/bin/cardserver &


    файлы в plugins, по синей кнопке можно запустить скрипт.
    Аналогично для киляния.
    Принцип думаю понятен.


    О правильности судить не берусь, но работает

  • Цитата

    Со слов пользователя Courage
    kulibin
    и еще .... как ты вызов скрипта умудрился в меню плагинов положить?


    Не нашел свою инструкцию в разделе Спутниковый интернет через Дрим, помоему Goga777 собирался его закинуть в путеводитель, но я что-то его там найти немогу, выложу здесь, если что потом уберете.
    Автоматизиция запуска глобальной сети на дриме через BLUE PANEL - PLUGINS:
    Инструкция:
    создаем файл sat_inet.cfg с следующим содержанием:
    name=START SAT GATE 42
    desc=
    depend=
    type=3
    needfb=0
    needrc=0
    needlcd=0
    В позиции name задаем название, которое будет высвечиваться в папке PLUGINS
    создаем файл sat_inet.sh с следующим содержанием:
    #!/bin/sh
    /bin/sh /var/tuxbox/plugins/sat_inet2.sh
    где /bin/sh /var/tuxbox/plugins/sat_inet2.sh ссылка на скрипт запуска интернета
    создаем файл sat_inet2.sh с следующим содержанием:
    #!/bin/sh
    dvbnet 0x019c
    sleep 1
    ifconfig dvb0_0 192.168.х.х netmask 255.255.255.0 hw ether хх:хх:хх:хх:хх:хх mtu 1400
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
    echo 0 > /proc/sys/net/ipv4/conf/dvb0_0/rp_filter
    sleep 1
    route add 172.уу.уу.уу gw 192.168.0.1 dev eth0
    echo "Now sat inernet is worked"
    exit 0
    0x019c - пид 412 в HEX (если у Вас на СатГейт, то соответственно он будет другим)
    192.168.х.х - ip дрима
    хх:хх:хх:хх:хх:хх - ваш MAC
    172.уу.уу.уу - ip присвоенный Вам провайдером
    192.168.0.1 - ip вашего компа
    Теперь создаем такой же скрипт для отключения спутникового интернета.
    создаем файл stop_inet.cfg с следующим содержанием:
    name=stop SAT GATE 42
    desc=
    depend=
    type=3
    needfb=0
    needrc=0
    needlcd=0
    В позиции name задаем название, которое будет высвечиваться в папке PLUGINS
    создаем файл stop_inet.sh с следующим содержанием:
    #!/bin/sh
    /bin/sh /var/tuxbox/plugins/stop_inet2.sh
    где /bin/sh /var/tuxbox/plugins/stop_inet2.sh ссылка на скрипт остановки интернета
    создаем файл stop_inet2.sh с следующим содержанием:
    #!/bin/sh
    dvbnet -0
    route del 172.хх.хх.хх
    route add default gw 192.168.0.1 dev eth0
    где 172.хх.хх.хх - ip присвоенный Вам провайдером
    192.168.0.1 - ip вашего компа
    После всего этого запускаем DreamControlCentre переходим в режим FTP заходим в папку /var/tuxbox/plugins/ и удерживая клавишу CTRL выбираем кликаем левой кнопкой мышки поочередно по файлам sat_inet.sh, sat_inet2.sh, stop_inet.sh, stop_inet2.sh далее кликаем правой кнопкой мыши по выделенным файлам и выбираем АТРИБУТЫ и присваиваем 755.
    Все готово, заходим в Blue Panel-Plugins и видим две новых записи START SAT GATE 42 и stop SAT GATE 42, теперь можно работать! Поэтому же принципу можно создать аналогичные скрипты для других подписок и PIDов.

    Сообщение было отредактировано 1 раз, последнее редактирование пользователем kulibin ().

  • Цитата

    В связи с чем у меня возникает вопрос, есть ли под Linux аналогичные команды IF и GO TO?


    Интерпретатор ASH имеет все основные функции. Циклы (while, for), условия (if, case). И.Т.Д.
    НО ! Отсутствует обратная связь с Энигмой ! Т.Е. Управлять скриптом при помощи инфраред - не получится !


    В Вашем случае (for Gemini) , я бы поместил эти скрипты в /var/script/ и назвал их, типа START_SAT_GATE_42_userscript.sh , STOP_SAT_GATE_42_userscript.sh И.Т.Д.
    Тогда они будут доступны из BluePanel->System info->User script , и Вы увидите на экране телевизора результат их работы. (console output).
    Следующее несчастье ;( ... скрипту нельзя передать параметры ...
    НО ! Все решаемо !


    Сначала в /var/script/ создем файл DVBNET.sh, примерно такого содержания (допишите сами)


    Потом делаем -




    Для Gemini есть специальный набор расширений - _cam.sh , _script.sh, _userscript.sh

    Сообщение было отредактировано 3 раз, последнее редактирование пользователем zuriuslev ().

  • peon
    спасибо за наводку - честно говоря не знал что так просто можно )))
    как то эта инфо мимо меня пролетела ))))
    жаль что ничего при этом не увидишь - я имею ввиду результаты работы скрипта ...
    а в том варианте с shelltools - результат работы скрипта выводился на экран....
    т.е. кроме команд на запуск и останов можно было и запускать еще скрипт с командой
    pcamd -ecminfo например - и видно было что он выводит в консоль.....


    а по поводу базибоксовых вариантов шелов - имел опыт общения с dash из busybox -
    ну во первых сразу натолкнулся на ограничения - и главное что документации по
    таким обрезанным версиям нигде не нашел (((
    ash
    ash [FILE]... or: ash -c command [args]...
    The ash shell (command interpreter)
    это все что на сайте базибокс узрел )))
    по поводу dash инфо в инете тоже маловасто - только в системе у себя нашел man page на dash

  • Цитата

    Со слов пользователя zuriuslev
    В Вашем случае (for Gemini) , я бы поместил эти скрипты в /var/script/ и назвал их, типа START_SAT_GATE_42_userscript.sh , STOP_SAT_GATE_42_userscript.sh И.Т.Д.
    Тогда они будут доступны из BluePanel->System info->User script , и Вы увидите на экране телевизора результат их работы. (console output).
    Для Gemini есть специальный набор расширений - _cam.sh , _script.sh, _userscript.sh


    Огромное спасибо за совет, но этот вариант мне известен. Мы уже обсуждали его в теме про спутниковый интренет, но вариант выложенного мною выше скрипта мне более удобен, так как запуск спутникового инета занимает всего два нажатия на пульте.
    В моем случае при нажатии желтой кнопки выпадает список PLUGINS, среди которых есть START SAT и STOP SAT. В принципе я могу добавить такой же скрпипт для пидов 400, 500, 600 и для других провайдеров, но мне интересно создание именно многоуровнего меню, т.е создаем один большой скрпит, в котором будут различные провайдеры, выбираешь провайдера, а там вариации пидов, я думаю не только мне интересен такой вариант!
    Вот что я нарыл Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
    GOTO - переход по заданной метке, эквивалент команды в Linux отсутствует (используйте функции)
    Вообщем чтобы создать такое меню нужно обладать кое-какими навыками в программировании, мне как юристу придется нарыть не мало инфы о этом деле и пройти курс молодого Линюксовода ;)
    Big thanks to Courage за ссылку, всем спасибо, за помощь!

    Сообщение было отредактировано 1 раз, последнее редактирование пользователем kulibin ().

  • Цитата

    GOTO - переход по заданной метке, эквивалент команды в Linux отсутствует


    Комманда GOTO - фактически не используется в программировани ... Плохой стиль ! =) НЕ НУЖНА ОНА ...


    Цитата

    принципе я могу добавить такой же скрпипт для пидов 400, 500, 600

    Посмотрите выше, немного подправим свой пост, много скриптов не надо .... достатосно одного.


    Цитата

    но мне интересно создание именно многоуровнего меню


    Изучайте С++, Линукс и.т.д. При помоши шелл скриптов, вызываемых из Энигмы, это невозможно ... ;(


    То Courage

    Цитата

    а в том варианте с shelltools - результат работы скрипта выводился на экран....


    В стандартных CVS имиджах всегда был "script" плугин (apps/tuxbox/plugins/enigma/script) .
    Запуск скриптов script01.sh - script09.sh из /var/bin и вывод результатов на телик.

    Сообщение было отредактировано 1 раз, последнее редактирование пользователем zuriuslev ().

  • Цитата

    Со слов пользователя kulibin
    Не нашел свою инструкцию в разделе Спутниковый интернет через Дрим, помоему Goga777 собирался его закинуть в путеводитель, но я что-то его там найти немогу, выложу здесь, если что потом уберете.


    в Путеводителе она, ссылка, как и обещал.
    Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.

  • zuriuslev

    Цитата

    В стандартных CVS имиджах всегда был "script" плугин (apps/tuxbox/plugins/enigma/script) .


    что ты имеешь ввиду - то что он в исходных присутствует? потому что в имиджах я такого
    отдельного плагина в имидже на запуск скриптов не вижу //// или как эти скрипты запускать?


    а по поводу вывода на экран результатов работы скриптов - я разобрался - результаты выводятся!
    предположим есть скрипт
    /var/bin/camd3_info.sh

    Исходный код
    /var/bin/pcamd -ecminfo


    положил в /var/tuxbox/plugins два файла
    /var/tuxbox/plugins/ecm_info.cfg

    Исходный код
    name=ECM info
    desc=
    depend=
    type=3
    needfb=0
    needrc=0
    needlcd=0


    здесь важно именно type=3 /ю/// тип 2 - это плагин .so в меню плагинов .... тип 1 - игра вроде в меню игр
    /var/tuxbox/plugins/ecm_info.sh

    Bash
    #!/bin/sh
    
    
    /bin/sh /var/bin/camd3_info.sh


    ну и пермиссии скриптам 755 дал конечно
    и вижу на экране то что хотел ))))
    аналогично сделал скриптики на останов запуск самого к@мд3 .... удобно на самом
    деле - прям в меню плагинов


    всем спасибо за наВОДКУ ))))