AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 19586
Accepted
fourstar71
fourstar71
Asked: 2009-06-05 03:07:40 +0800 CST2009-06-05 03:07:40 +0800 CST 2009-06-05 03:07:40 +0800 CST

使用 Jabber 发送网络消息

  • 772

当其他用户在线提交报告内容时,我们需要通过网络向各种用户(合规、生产)发送桌面警报。

目前我们正在使用 NET SEND,但这并不能保证交付,并且从客户端和服务器的角度来看都证明是不可靠的(我猜在更高版本的 Windows 中将不支持;我们目前正在运行 XP)。

我们正在考虑基于 Jabber 的解决方案,但是否有人使用 Jabber 客户端像 NET SEND 那样在屏幕上弹出警报消息,而不是仅仅将聊天窗口置于最前面或在系统附近显示临时“toast”消息托盘。

我们需要警报消息是持久的,并且只被用户关闭,表明他们已经看到它。Toast 风格的弹出窗口会很好,只要它不仅在有限的时间内并且必须再次被用户关闭。

有什么解决办法吗?

windows networking windows-xp xmpp alerts
  • 6 6 个回答
  • 1935 Views

6 个回答

  • Voted
  1. Best Answer
    David
    2009-06-05T05:42:59+08:002009-06-05T05:42:59+08:00

    我们家也有类似的东西。我们将 Miranda IM 客户端与 notifyanything 和弹出插件一起使用。

    Notifyanything 允许客户端在指定端口上接收 udp 消息。Popup 就是这样做的,在用户屏幕顶部的窗口中显示消息。

    在我们的例子中,一切都在内部网络上,所以 UPD 数据包的丢失不是问题。

    这是我们运行以将 udp 消息从服务器发送给用户的 python 脚本示例:

    #!/usr/bin/python
    
    import socket, sys
    
    hosts = (
      ('10.0.0.1',  15000),
      ('10.0.0.2',  15000),
      ('10.0.0.3',  15000),
    )
    
    def send(txt):
      s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
      for h,p in hosts:
        s.sendto(txt, 0, (h,p))
      del s
    
    if len(sys.argv) > 1:
      s = "\n".join(sys.argv[-2:])
      send(s)
    
    • 1
  2. carlito
    2009-06-05T17:24:47+08:002009-06-05T17:24:47+08:00

    我遇到了这个确切的问题。目标是沿着升级路径传递每个警报 - 如果在给定的时间范围内未确认警报,则将警报发送给列表中的下一个人。我们确定 Jabber 是最佳解决方案,但要做到这一点,我们必须扩展协议或调查更多客户端。(该协议非常适合扩展,并且有无数的客户端可用)。这个问题是因为经常需要确认一些警报而不是其他警报。

    例如。警报的最终路径:

    通过 Jabber 发送给管理员 A。
    5 分钟后没有确认,通过 Jabber 发送给管理员 B。
    5 分钟后没有确认,通过 SMS 发送给管理员 A。
    5 分钟后没有确认,通过 SMS 发送给管理员 B。
    5 分钟后没有确认,通过 Jabber 发送给管理员 A 和 B 的经理。
    5 分钟后没有确认,通过 SMS 发送给管理员 A 和 B 的经理。
    经理评估警报、确认或致电管理员 A 或 B。
    

    问题是,如果在此过程中生成第二个警报,管理员 A 或 B 可能希望确认它,但不确认第一个警报。例如,如果他们正忙于生成另一个警报的单独问题,或者如果他们不在计算机附近,则知道第二个警报并不严重,但第一个警报需要由附近的人处理计算机和升级机制是找到合适人选的最有效方式。

    Jabber 中有两种类型的消息传递。(我相信称为普通与聊天)这两种类型中的一种可能允许区分响应消息的方式。不幸的是,如果收到大量消息,可能允许这样做的消息类型会给我们测试的客户端带来极大的不便。(此外,我不确定测试人员是否确定是否有可能确实区分正在响应的内容,因为这个问题压倒了测试)。

    由于它是探索性的,而且我们真的没有时间实施完整的解决方案,因此我们无法确定问题是否只是选择了更好的客户端,或者是否需要对协议进行扩展。我仍然认为 Jabber 是提供警报的最佳方法。对于任何警报传递/升级系统,确认警报的人应该拥有警报的所有权,并且应该对每个未能确认警报的人产生影响。这必须与系统了解联系人员的最佳方式、待命轮换、警报泛滥的风险、当前不在轮换中的人创建的警报问题以及由如果现有系统没有,则会意外创建问责制的警报系统。

    • 1
  3. MathewC
    2009-06-09T04:50:47+08:002009-06-09T04:50:47+08:00

    很抱歉,这不是您问题(关于 Jabber)的准确答案,但您可能想查看 ReachAlert。

    http://www.tekalign.com/

    这将阻止人们破坏您的 jabber 实现,因为他们可以决定将其用于其他用途(聊天、向其他用户发送消息)。

    我也同意网络发送。它正在消失,并且禁用它是一种常见的做法,因为它被滥用于垃圾邮件。

    让我知道你的想法和进展;-)

    • 1
  4. Peter
    2009-06-05T03:21:27+08:002009-06-05T03:21:27+08:00

    这可能是在 Stackoverflow 上提出的一个更好的问题,但看起来 Jabber 确实有 python 和 perl 库,所以这应该是可能的。

    http://jabberpy.sourceforge.net/

    http://search.cpan.org/~reatmon/Net-Jabber-2.0/lib/Net/Jabber.pm

    • 0
  5. Viky
    2009-06-05T03:47:51+08:002009-06-05T03:47:51+08:00

    用过PSI jabber客户端。它具有弹出通知和声音通知。JAJC jabber 客户端也是如此。

    • 0
  6. Maxwell
    2009-06-09T05:02:51+08:002009-06-09T05:02:51+08:00

    我认为这可以通过像 ZAbbix 这样的监控解决方案来实现,您可以通过远程脚本触发任何远程事件的操作,一旦触发了操作,Zabbix 就可以进行升级。操作可以是运行远程脚本、通过 jabber 发送电子邮件或警报,直到触发器被确认。

    • 0

相关问题

  • 您最喜欢的云计算提供商是什么?[关闭]

  • Vanilla Powershell 是否足以成为 Windows 和 DB 服务器管理员的语言?

  • 为什么添加新驱动器后我的磁盘驱动器访问速度如此之慢?

  • 在 Windows Server 2003 下使用 wscipt 从 .asp 文件运行 .exe

  • 最佳混合环境(OS X + Windows)备份?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve