Ubuntu 16.04 - como reproduzir um som do script executado a partir do webservice, em segundo plano

2

Eu sou um desenvolvedor e configurei um servidor no Ubuntu 16.04, executando serviços da web.

Esses serviços da web estão chamando algum arquivo de script localmente o script está fazendo alguma tarefa e deve tocar um som quando a tarefa for concluída.

O problema é que o script é chamado, as tarefas são feitas, mas o som não é reproduzido.

Aqui está minha lista de verificação:

  • O som está funcionando bem e configurado corretamente no computador.
  • Se eu chamar meu script a partir da linha de comando do terminal, as tarefas estarão concluídas e o som será reproduzido.
  • Se eu chamar o script do serviço da Web, as tarefas estarão concluídas, mas o som não será reproduzido.

Aqui está um exemplo do que testei:

# 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

Todas as linhas acima estão reproduzindo som quando o arquivo de script é executado a partir do terminal e não há som quando executado a partir do serviço da Web!

O que eu posso fazer para resolver isso?

    
por Olivier Robin 24.04.2018 / 16:44

1 resposta

0

Resposta atualizada

O som deve ser reproduzido no servidor, mas o problema é que ele só será reproduzido se um usuário estiver logado.

Eu testei isso nos sistemas de teste do Lubuntu e do Xubuntu Bionic (que estou testando de qualquer maneira). Instalei openssh-server e espeak (e no Xubuntu-Core e Ubuntu você também precisa do pacote de programas gnome-system-tools para obter o programa users-admin ).

Depois, há uma correção fácil:

  1. Selecione Usar dispositivos de áudio em users-admin
  2. Pressione OK .

Você pode precisar mover a janela (com alt + botão esquerdo do mouse ) para encontrar o botão OK .

Emseguida,elefuncionaaindanateladeloginparareproduzirosomviassheeudiriatambémpormeiodeoutrosserviçosdaweb,

[email protected]"espeak 'Hello while still at the log in screen'"

Modifique o ID do usuário e o endereço de rede para corresponder ao seu caso.

Para facilitar o processo (com ssh ), você deve fazer o login com as chaves, mas não sei se isso é um problema com o seu serviço da web.

Espero que isso possa ajudá-lo a reproduzir um som que você possa ouvir quando as tarefas no servidor forem concluídas.

Resposta original

Presumindo ssh e o som a ser reproduzido no cliente

Se você fizer login via ssh , o som estará no servidor, não no cliente. Eu acho que você quer que o som seja transferido para o cliente.

  • É possível transferir o som para o cliente, mas não é direto. Talvez você encontre algo útil, ao navegar na Internet com a seguinte string de pesquisa, linux sound no cliente . Eu acho que sim (mas não testei).

  • Mas há uma solução alternativa, isso é mais simples. Execute as tarefas no servidor de forma que você possa reproduzir o som localmente no seu cliente, quando as tarefas terminarem.

Exemplo:

openssh-server está instalado na minha estação de trabalho e eu posso conectá-lo a partir de qualquer outro computador através da minha rede local.

Instale espeak ,

sudo apt install espeak

O seguinte marcador ilustra o que acontece,

ssh [email protected] \
"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

Esta é a saída escrita de uma unidade ao vivo com Lubuntu.

lubuntu@lubuntu:~$ ./tasks-at-server_reported-at-client 
[email protected]'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:~$ 

Se você puder ouvir os dois computadores, ouvirá o servidor "falar" e depois ouvirá o cliente "falar". Caso contrário, você ouvirá o cliente 'falar'.

    
por sudodus 24.04.2018 / 22:17