从终端向本地登录的用户广播消息

从终端向本地登录的用户广播消息

这就是我想做的事情。孩子们在 Ubuntu 盒子上看电影、youtube 等。我在 Windows 盒子上做任何事情。由于孩子们的耳朵里植入了耳机,我想登录终端并向他们发送某种广播消息以引起他们的注意或给他们发送消息。我已经知道如何在他们玩耍时远程登录终端来操作盒子。

我看到了一些选项,如“Wall”或“Write”,但这些选项似乎只在终端登录时有效。我可以将消息发送到通过终端登录的测试帐户,但不会发送给坐在显示器前的本地用户。

我有什么选择?在大多数情况下,我希望弹出一个窗口,其中包含我想传递的任何消息,当 youtube 或其他东西全屏时,它会打断他们正在做的事情。有

什么想法?建议?忠告?

答案1

授予访问权限

xhost +local:

或禁用访问控制,客户端可以从任何主机连接(这个想法很糟糕,但在你的网络中似乎没问题)

xhost +

现在您可以通过远程连接执行此操作:

DISPLAY=:0 xmessage -center " THIS IS A TEST MESSAGE"

下面是一个小演示。我在 TTY1 和 GUI 终端之间共享了会话。如您所见,没有为设置环境变量DISPLAY,因此该终端就像我在 TTY1 中工作一样。上面的命令临时设置了变量DISPLAY,从而使 xmessage 出现在该显示器上的 xserver 实例上。

在此处输入图片描述

我尝试做同样的事情notify-send但似乎没有效果。

编辑

xmessage有点小。我更喜欢使用zenity对话框。例如,

DISPLAY=:0 zenity --info --text=" THIS IS ZENITY INFO DIALOG "

答案2

由于您想在他们的屏幕上创建弹出窗口,最简单的方法是:

1) 在您的孩子登录时启动一个程序(我会使用 Perl 脚本)。将其放在后台。Perl 脚本应该监听某个未使用的端口(例如端口)TCP上的连接。当它收到一条消息(通过端口)时,它可以生成弹出窗口,并等待下一行。 10246553612345TCP12345

2) 在 Windows 上,使用putty连接到 Ubuntu 服务器上的 TCP 端口 12345,然后输入您的消息。

答案3

如果您想要的是一条简短的消息,则可以使用notify-send。这将在屏幕的右上角创建一个短暂的警报消息(与 Thunderbird 用于提醒您有新邮件或 Filezilla 用于提醒您长时间运行的操作已完成的样式相同)。

notify-send "message text here"

或者

notify-send "title here" "message text here"

或者,如果你真的希望得到他们的关注,

notify-send "title here" "message text here" -i face-angry

这会将一张愤怒的脸(有惊喜!)放在消息前面。您可以使用各种图标。要查看计算机上可用的列表,请输入ls /usr/share/icons/gnome/32x32/emotes/

相关内容