(Esta é a resposta do @xzfc com algumas correções.)
Instale ncat
na sua máquina cliente e servidor. Porque nc
nas distribuições usuais (Debian, Ubuntu) não tem as opções para executar comandos ( -c
/ -e
) que precisamos.
apt install nmap
Na sua máquina local, configure um servidor que execute um comando para reproduzir um som quando uma conexão for estabelecida com ele:
ncat --sh-exec "paplay /usr/share/sounds/freedesktop/stereo/complete.oga" \
--keep-open --listen localhost 10009
Ou use o comando abreviado equivalente:
ncat -klc "paplay file.oga" localhost 10009
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):
ssh -R 10008:localhost:10009 me@somewhere.com
Execute seu make
comando da seguinte maneira no shell SSH:
make; ncat --idle-timeout 1s localhost 10008
Como funciona
Após o make
comando (com êxito ou não), o ncat
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 um ncat
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.