Ubuntu 16.04 - как играть звук из скрипта, запущенного от веб-сервиса в фоне

Я - разработчик и настроил сервер на человечности 16.04, выполнив веб-сервисы.

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

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

Вот мой контрольный список:

  • Звук хорошо работает и правильно настроенный на компьютере.
  • Если я называю свой сценарий из терминальной командной строки, задачи сделаны, и звук играется.
  • Если я называю сценарий от веб-сервиса, задачи сделаны, но звук не играется.

Вот пример того, что я протестировал:

# script name : eject.sh
# ... here I do some stuff, which are working fine...
play -q /mnt/datas/wifi_started.mp3 >/dev/null
cvlc --play-and-exit /mnt/datas/wifi_started.mp3 &>/dev/null &
nohup mplayer /mnt/datas/wifi_started.mp3 > /dev/null 2>&1

Все строки выше играют звук, когда файл сценария выполняется от терминала и никакого звука при выполнении от веб-сервиса!

Что я мог сделать для решения этого?

2
задан 24 April 2018 в 17:59

1 ответ

Обновленный ответ

Звук должен играться в сервере, но проблема состоит в том, что он будет только играть, если пользователь будет зарегистрирован.

Я протестировал это в системах тестирования Lubuntu и Xubuntu Bionic (что я тестирую так или иначе). Я установил openssh-server и espeak (и в Xubuntu-ядре и Ubuntu Вам нужен также пакет программы gnome-system-tools получить программу users-admin).

Затем существует легкая фиксация:

  1. Выберите аудиоустройства Использования в users-admin
  2. Нажмите OK.

Вы, возможно, должны переместить окно (с высоким звуком + левая кнопка мыши) для нахождения кнопки OK.

enter image description here

Затем это работает в то время как все еще в журнале на экране для проигрывания звука через ssh и я предположил бы также через другие веб-сервисы,

ssh tester@192.168.0.10 "espeak 'Hello while still at the log in screen'"

Измените идентификатор пользователя и сетевой адрес для соответствия случаю.

Сделать вещи гладкими (с ssh) необходимо войти в систему с ключами, но я не знаю, является ли это проблемой с веб-сервисом.

Я надеюсь, что это может помочь Вам играть звук, который можно услышать, когда задачи в сервере выполнены.

Исходный ответ

Принятие ssh и звук, который будет играться в клиенте

Если Вы регистрируетесь на пути ssh звук в сервере, не в клиенте. Я предполагаю, что Вы хотите, чтобы звук был передан клиенту.

  • Возможно передать звук клиенту, но это не просто. Возможно, Вы найдете что-то полезным при просмотре Интернета со следующей строкой поиска, звуком Linux в клиенте. Я думаю, что сделал (но не протестировал его).

  • Но существует обходное решение, которое более просто. Выполните задачи в сервере, таким образом, что можно играть звук локально в клиенте, когда задачи закончились.

Пример:

openssh-server установлен на моей рабочей станции, и я могу соединиться с нею от любого другого компьютера через мою локальную сеть.

Установка espeak,

sudo apt install espeak

Следующий сценарий оболочки иллюстрирует то, что происходит,

ssh sudodus@192.168.0.2 \
"echo 'Who am I to do this?'| tee /dev/stderr |espeak; whoami| \
tee /dev/stderr |espeak| tee /dev/stderr |espeak;\
echo 'At which server?'| tee /dev/stderr |espeak;hostname -A| tee /dev/stderr|espeak"

sleep 1

echo 'Who am I to check this?'| tee /dev/stderr |espeak; whoami| tee /dev/stderr |espeak
echo 'At which client?' | tee /dev/stderr |espeak
hostname -A| tee /dev/stderr |espeak

Это - записанный вывод от живого диска с Lubuntu.

lubuntu@lubuntu:~$ ./tasks-at-server_reported-at-client 
sudodus@192.168.0.2's password: 
Who am I to do this?
sudodus
At which server?
xw8400 
Who am I to check this?
lubuntu
At which client?
lubuntu 
lubuntu@lubuntu:~$ 

Если можно услышать оба компьютера, Вы услышите, что сервер 'говорит' и после этого слышит, что клиент 'говорит'. Иначе Вы услышите, что клиент 'говорит'.

0
ответ дан 2 December 2019 в 07:45

Другие вопросы по тегам:

Похожие вопросы: