LINUX.ORG.RU

Запустить bash-скрипт по web-запросу

 , ,


0

1

Добрый день!

Для чего понадобилось такое извращение:) есть одноплатный arm под названием Cubietruck с установленным Debian, который подключен к ТВ. Аппаратное ускорение для этого Cubietruck реализовано только под mplayer. Чтобы что-либо посмотреть с YouTube на большом экране приходится пользоваться youtube-dl. Команда для запуска этого чуда примерно следующая:

export DISPLAY=:0.0 && wget -q -O - `youtube-dl -g <URL Youtube video>` | mplayer <опции mplayer> - 
Теперь вот захотелось сделать использование этого скрипта чуть более удобным, а именно написать дополнение для браузера (ну это потом), которое бы запускало требуемое видео на большом экране. Соответственно, нужно как-то обеспечить запуск скрипта на просмотр видео по web-запросу. С этим возникли проблемы.

Поставил nginx, поставил fcgiwrap, конфигурацию для nginx подсмотрел здесь, плюс добавил fastcgi_param QUERY_STRING $query_string для отработки параметров запроса. Все это работает, но только для простых команд в дергаемых через web скриптах, если же в скрипте ввод-вывод или работа с графической оболочкой (установить тот же DISPLAY), то ничего не происходит — такого рода команды просто игнорируются.

Подозреваю, что дело тут в пониженных привилегиях при отработке запросов, но как повысить эти привилегии ума не приложу. Какого-либо опыта работы с веб-серверами и nginx в частности не имею.

Посоветуйте что-нибудь стоящее для решения указанной проблемы, please.

mplayer

2015

Бери mpv — у него интеграция с youtube-dl их коробки. Зачем тебе вообще nginx — непонятно. Если ты заходишь «что-либо посмотреть с YouTube» из браузера, то можно просто настроить браузер запускать mpv.

запускало требуемое видео на большом экране

mpv --screen=…

anonymous
()
Ответ на: комментарий от anonymous

mpv пробовал, но странное дело — енто аппаратное ускорение с ним работать не хочет, так что своеобразный mplayer lock :). Что касается web-сервера, то смысл в том, что Cubietruck подключен к ТВ, а обычный интернет-серфинг удобнее делать с ноутбука (или телефона), а не с Cubietruck (к которому ни клавиатура, ни мышь не подключена — только ssh)

milton14
() автор топика
Ответ на: комментарий от beastie

Для vlc применительно к этому чуду тоже есть реализация аппаратного ускорения, но заметно хуже - 720p уже с большими потугами, процессор под 100, fps примерно 15-20 в лучшем случае. Так что mplayer пока без вариантов.

milton14
() автор топика

На правах костылей - сделай демон, который будет читать какой-нибудь fifo и запускать mplayer, в fifo пиши свой запрос через nginx.

А вообще начни с простого - попробуй по любому запросу выводить какой-нибудь xclock, дальше, думаю, будет виднее.

alozovskoy ★★★★★
()
Ответ на: комментарий от milton14

mpv пробовал, но странное дело — енто аппаратное ускорение с ним работать не хочет

странное дело - у него херова туча опций, которые надо было хотя бы бегло просмотреть

zolden ★★★★★
()

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

А что касается X-ов, дак обычно DISPLAY мало, нужно либо ″xhost +″, либо переменная среды ″XAUTHORITY″, погуглите.

mky ★★★★★
()

А что насчет netcat запущенного от пользака у которого есть и DISPLAY и прочее? Запустить его в режиме когда он после обработки запроса сам себя рекурсивно поднимает с теми же опциями, и снова ожидает входящий запрос. Так ни нжинкс не нужен будет ни прочие костыли.

deep-purple ★★★★★
()
Ответ на: комментарий от alozovskoy

Скрипт оформил в виде демона + fifo. Все заработало. Спасибо alozovskoy за наводку.

milton14
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.