Answers:
该xmessage工具可让您完全做到这一点;向用户显示一个弹出窗口,并在其中显示一条短信。
示例:user2登录到该盒子上的BASH会话并发出:
export DISPLAY=':0.0'
xmessage "some message here"
如果您登录到TSCH会话,则可能是这样的:
setenv DISPLAY ':0.0'
xmessage "some message here'
或者,您可以通过以下两种方式之一将消息发送到终端会话:
使用wall(=警告所有[用户])
在手册页中:
Wall在所有当前登录用户的终端上显示文件或默认情况下的标准输入的内容。
如果要定位特定用户,请使用write。再次,男人告诉我们:
通过使用写入实用程序,您可以通过将行从终端复制到其他用户来与其他用户进行通信。
xmessage但是如何运行它user1并在user2屏幕上打开这个小窗口?可能吗?
通常,X11会话通常以“私有”模式启动,因此您需要满足以下两项条件之一:从合作user2到允许您访问他们的屏幕,或者从超级用户特权“闯入”他们的屏幕。
危险:请记住,一旦可以访问他们的屏幕,您还可以执行一些操作,例如捕获击键(可能包括密码)和截图,因此这是很大的安全隐患。
在大多数情况下,最好使用消息传递工具或聊天程序来处理这些事情。
除了注意事项:
合作
如果user2要允许user1访问其屏幕,则user2必须首先发出以下命令:
xhost +si:localuser:user1
可能会将其添加到某种启动脚本中。我不知道Fluxbox,但我认为它具有一个rc或会话启动挂钩。
发出通知user1后user2,如果他们可以找到,则可以写入的显示。
如果user2知道这一点,他们可以随时以user1其他方式将其发送给。
查找其他用户的显示
在典型的工作站上,通常会有一个或两个以上的用户登录。在这种情况下,“猜测”您想要的显示为0、1或2可能是可行的解决方案。
但是,对于更完整的解决方案,我们假设您有一台可以登录很多用户的计算机,然后尝试找到所需的计算机。
for proc in /proc/[0-9]*/
do
if [ Xorg = $(< $proc/comm ) ] 2>/dev/null && \
[ $(id -u user2) -eq $(< $proc/loginuid) ] 2>/dev/null
then
for subproc in $(
do
echo "user2 display=" $(perl -ne 'if (m,DISPLAY=(.*)\0,) { print $1 }' < $subproc/environ)
done
fi
done
然后,user1终于可以了(使用上面获得的DISPLAY值;我刚刚:14.0在这里写过……)
DISPLAY=:14.0 xmessage "Hello, user2"
而是发送通知
为了完整起见,至少在Gnome桌面上可以使用以下功能。我不知道Fluxbox是否具有通知小部件。
DISPLAY=:14.0 notify-send "Hello, user2"
这有很多用户友好的显示选项,并且可能会以一种更加友好的方式在用户的屏幕上弹出。
for subproc in什么?我认为您的脚本在这里已损坏。
user1在我的示例中)已登录X11,但尚未打开xterm或其他终端-也可以wall工作吗?我认为user1不会看到消息。