我的网络有一台服务器和多台路由器(大约 300 台,甚至更多,全部在 OpenWRT 上运行)。路由器没有公共 IP,服务器无法连接到它们。但我需要知道路由器是否在线。为此,路由器每分钟向服务器发送一次信号。
这是信号:
wget http://server.com/ping?mac=MACOFTHEROUTER
当用 PHP 编写的接收器从路由器获得查询时,只需在数据库中保存路由器的日期和 mac 地址。现在我们知道路由器是否处于活动状态或何时被禁用。
如果我想向路由器发送一些命令,我会将命令发送给接收器的答案,结果将保存在路由器上的文件中,文件获得运行权限后,运行后删除。并向路由器发送另一个任务完成的信号,也是通过 wget,但发送到不同的 URL。
wget http://server.com/done?mac=MACOFTHEROUTER&result=Stout+of+the+command
现在服务器知道命令的结果,并可以将其显示给用户。对我来说,这很好用。但有时命令的结果非常大,我无法将其放入 GET 中。此外,发送命令后,我应该等待一分钟才能获得结果并发送下一个命令。如果您尝试调试路由器,这不太好。我想一次向所有路由器发送一个命令并从所有路由器获得答案。这是理想的情况。为此,我认为我可以使用一些流式(实时)应用程序,例如在 Web 技术中使用。比如http://pusher.com/。我希望我的网络有类似的东西,可以实时查看路由器的状态,并实时向路由器发送命令。当然,这不会加载网络,应该是安全的。请帮忙寻找更好的解决方案。也请原谅我的英语不好。
答案1
硬件是否足以安装 puppet 或其他基于代理的配置管理工具?puppet 客户端可以配置为定期签入,签入时它会向 puppet 服务器报告大量有用的信息,这些信息可以被捕获、存储并以多种有用的方式使用。这几乎肯定是做你想做的事情的正确和标准方法。但大多数流行的配置管理工具都需要大量资源。
如果那不是一个选项,您可以在所有路由器上设置一个简单的 VPN 客户端,以便建立并保持与监控系统的连接。不要通过 VPN 路由任何内容,只需将其用于与管理系统的点对点连接。从那里,您只需通过 SSH 即可连接到所有连接的节点。
如果您想坚持使用 http 请求设置,那么您可能需要查看 curl。使用 CURL 可以非常轻松地发送 POST 请求。