更新答案

更新答案

我是一名开发人员,在 ubuntu 16.04 上配置了一个服务器,运行 Web 服务。

这些 Web 服务正在本地调用一些脚本文件,该脚本正在执行某些任务,并且应该在任务完成时播放声音。

问题是,脚本调用了,任务完成了,但是没有播放声音。

以下是我的清单:

  • 声音在计算机上工作正常且配置正确。
  • 如果我从终端命令行调用我的脚本,任务就完成了,并且播放了声音。
  • 如果我从 Web 服务调用脚本,任务就完成了,但不会播放声音。

以下是我测试过的一个例子:

# 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

从终端执行脚本文件时,以上所有行都会播放声音,而从 Web 服务执行时则没有声音!

我该怎么做才能解决这个问题?

答案1

更新答案

声音应该在服务器上播放,但问题是只有用户登录后它才会播放。

我在 Lubuntu 和 Xubuntu Bionic 的测试系统中测试了这一点(无论如何我正在测试它们)。我安装了openssh-serverespeak在 Xubuntu-Core 和 Ubuntu 中,您还需要程序包gnome-system-tools才能获取该程序users-admin)。

然后有一个简单的解决办法:

  1. 选择使用音频设备users-admin
  2. OK

您可能需要移动窗口(带有alt+ left mouse button)来找到OK按钮。

在此处输入图片描述

然后它仍然在登录屏幕上播放声音ssh,我猜也可以通过其他网络服务播放,

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

修改用户ID和网络地址以符合您的情况。

为了使事情顺利进行(使用ssh),你应该使用密钥登录,但我不知道这是否是一个问题你的网络服务。

我希望这可以帮助您播放服务器中的任务完成时可以听到的声音。

原始答案

假设ssh客户端要播放的声音

如果您通过登录,ssh声音是在服务器上,而不是在客户端。我猜你想将声音传输到客户端。

  • 可以将声音传输到客户端,但这并不简单。当您使用以下搜索字符串浏览互联网时,也许您会发现一些有用的东西,客户端的 Linux 声音。我想我做过(但没有测试过)。

  • 但是有一个更简单的解决方法。在服务器上运行任务,这样当任务完成后,你就可以在客户端本地播放声音。

例子:

openssh-server安装在我的工作站上,我可以通过本地网络从任何其他计算机连接到它。

安装espeak

sudo apt install espeak

下面的脚本演示了发生的情况,

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

这是 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:~$ 

如果您能听到两台计算机的声音,那么您将先听到服务器的“说话”,然后听到客户端的“说话”。否则,您将听到客户端的“说话”。

相关内容