从远程机器接收通知作为本地事件

我想实现的是通过ssh从远程机器接收不同的通知。 例如,当长时间运行的作业完成时。

一种方法是通过xmpp发送消息,并在本地机器上有一个jid客户端。 我想这样做,没有任何中间服务器。 我想通过本地系统通知机制来获得这个通知,所以当事件提出时,我得到一个系统popup窗口,就像我使用的:

echo 'message:hi' | zenity --notification --listen 

要么:

 notify-send subject message 

这些工作在本地,但远程会话偏离课程。

我不能从networking上为我正在连接的服务器提供服务,因此无法连接回SSH并运行notify-send命令。

所以我试图通过转发本地端口到远程机器和编写一个小型的服务器/客户端应用程序来解决这个问题。 客户端将发送一个消息到转发的端口,我的机器上的服务器将调用notify send与收到的消息作为参数。 但是,这看起来像一个车轮改造,但我找不到解决scheme。 也许可以用DBUSconfiguration来实现。

安装rsyslog ,将服务器标记为中央日志logging服务器,更新客户端上的rsyslog.conf以将系统日志转发到中央服务器。 然后在那里做处理。

或者你可以修改系统日志的syslog.conf来将关键的消息转发到命名pipe道,只要命名pipe道中有东西,就用/ email给它做些事情。

 #syslog.conf ... *.crit |/PipeCriticalMessages ... 

那么你可能有一个进程使用pipe道中的数据,或者把它提供给一个摄取平台[例如,如果你有大量的数据,那么就是Apache's Flume ]。

假设(只是因为日志logging是一种常见的做法),您的应用程序(在远程服务器上)将每个事件写入文件。 因此,该文件中的每一行都是所需的通知。 诀窍:

ssh my.remote.server 'tail -f /path/to/notifications/log' | while read line; do notify-send 'Server says' "$line"; done

所以一旦新的线路出现在服务器上的日志中,您将在本地桌面上看到popup窗口。