A coisa mais simples que posso imaginar aqui é usar uma segunda sessão SSH para encaminhar um FIFO nomeado. Suponho que você tenha um tmp/
em seu diretório inicial. sinta-se livre para manter o FIFO onde quiser.
local$ ssh me@remotehost 'mkfifo ~/tmp/alert_fifo ; while cat ~/tmp/alert_fifo ; do : ; done' | \
while read icon_name text ; do
notify_send --urgency=low -i "$icon_name" "$text"
done &
Depois, você pode deixar isso ser executado em segundo plano enquanto você abre uma segunda sessão SSH para fazer seu trabalho real:
local$ ssh me@remotehost
remote$ alias remote_alert='echo ... >~/tmp/alert_fifo'
remote$ long_running_command; remote_alert
... onde remote_alert
é um alias de alert
modificado com notify_send --urgency=low -i
substituído por itens de eco no FIFO.
Isso funcionará com um conjunto mínimo de ferramentas na máquina remota: somente utilitários ssh e POSIX padrão. No entanto, com um FIFO, se você esquecer de executar seu leitor (ou seu leitor morre), seu gravador irá travar. Então, se você tiver socat
disponível, você pode tornar isso um pouco mais indulgente:
local$ ssh me@remotehost 'socat UNIX-RECV:~/tmp/alert_socket -' | \
while read ...
...
done &
local$ ssh me@remotehost
remote$ alias remote_alert='echo ... | socat - UNIX-SEND:~/tmp/alert_socket'