
Итак finch
, у меня есть клиент командной строки чата (например, Pidgin), работающий на удаленной машине, в которую я ssh
вхожу. finch
Он издает звуковые уведомления и может запускать команду при возникновении определенных событий, позволяя вам передавать звуковой файл как, %s
например,mplayer %s
Какую команду я могу выполнить с удаленной машины, когда появится уведомление, чтобы воспроизвести то, что %s
находится на моей локальной машине?
решение1
Если вы используетеимпульс-аудиокак звуковой сервер, вы можете использовать его module-native-protocol-tcp
для приема TCP-подключений с вашего удаленного компьютера.
В следующем примере я использую SSH-туннель для пересылки аудиозапроса с удаленной машины на локальную.
На локальной машине сделайте что-то вроде:
pactl load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
ssh -R 9999:127.0.0.1:4713 you@remotehost
затем на удаленной машине вы можете использоватьpaplay
paplay -s 127.0.0.1:9999 soundfile.wav
ДОБАВЛЕНЯ обнаружил, что auth-ip-acl
не принимает localhost
в качестве допустимого параметра, вам придется использовать 127.0.0.1
(или любой другой адрес localhost, который использует ваша машина).
РЕДАКТИРОВАТЬДолжно быть ssh -R
, а не ssh -L
(мы перенаправляем удаленный порт на локальный порт).
Если у вас старая версия Pulse-Audio (до 0.9.3), вы можете использовать авторизацию на основе cookie-файлов.
pactl load-module module-native-protocol-tcp auth-anonymous=1 auth-cookie-enabled=0
scp ~/.pulse-cookie you@remotehost:
ssh -R 9999:localhost:4713 you@remotehost
Очевидно, вы можете просто не использовать никакую аутентификацию в Pulse-Audio, но я не могу рекомендовать вам это решение. Используйте, по крайней мере, брандмауэр, чтобы избежать удаленных подключений.