Estou em uma ssh
conexão e gostaria de tocar um som após a conclusão de um comando (não no servidor em que me conectei).
Alguma coisa:
ssh [email protected]
make && play-sound-local
Eu tenho o alto-falante do PC desativado, então echo -e "\a"
não funciona.
Alguma sugestão?
ssh
audio
linux-mint
ubuntu-9.10
Egon
fonte
fonte
Respostas:
Você pode configurar o PulseAudio para permitir conexões de rede e, em seguida, usar o encaminhamento de porta ssh e
paplay -s
no lado remoto para enviar o áudio de volta através da conexão ssh. Observe que o áudio pode sofrer um atraso ou interrupção com base na fidelidade do áudio e na velocidade da conexão.fonte
Configure o servidor primitivo (por exemplo, na porta 1234) que reproduz som no computador local quando alguém se conectar e encaminhe essa porta ao servidor remoto.
Na máquina local:
então
PS: você deve usar, em
;
vez de,&&
se quiser ser notificado, mesmo quando o make falhou.fonte
(Esta é a resposta do @xzfc com algumas correções.)
Instale
ncat
na sua máquina cliente e servidor. Porquenc
nas distribuições usuais (Debian, Ubuntu) não tem as opções para executar comandos (-c
/-e
) que precisamos.Na sua máquina local, configure um servidor que execute um comando para reproduzir um som quando uma conexão for estabelecida com ele:
Ou use o comando abreviado equivalente:
SSH no host remoto de maneira que um túnel reverso seja estabelecido da porta 10008 do host remoto para a porta 10009 na sua máquina local (onde o servidor está escutando):
Execute seu
make
comando da seguinte maneira no shell SSH:Como funciona
Após o
make
comando (com êxito ou não), oncat
comando estabelece uma conexão com a porta 10008 no host remoto, que o SSH encaminha para a porta 10009 em sua máquina local, onde o servidor escuta e emite um som quando a conexão é feita. Depois que a conexão foi estabelecida, não precisamos mais dela e, portanto, é fechada depois--idle-timeout 1s
. Isso mostrará o prompt do shell novamente em vez de umncat
comando "travado" , tornando aparente que sua cadeia de comandos SSH realmente terminou.O encapsulamento reverso SSH faz esse trabalho, apesar de qualquer roteador / firewall / NAT entre sua máquina local e a máquina remota. (Caso contrário, você teria que configurar regras de encaminhamento de porta no seu roteador ou expor uma máquina local à Internet.)
Segurança
Fazemos
ncat -l localhost 10009
pelo servidor, o que significa que ele escuta apenas na interface de rede com o endereço IP do host local. Essa interface de loop local permite apenas conexões de sua própria máquina (incluindo, nesse caso, aquelas com túnel reverso via SSH). Portanto, mesmo se você não estiver protegido por um firewall, sua porta 10009 não estará exposta a ninguém na Internet.fonte