1

我在 RHEL 系统上运行 Redis 服务器,该系统要求进程每 24 小时更新一次 AFS 身份验证令牌。

在将数据发布到数据库的客户端代码中,我可以通过每 N 个 POST 请求调用一个 shell 命令来更新 AFS 令牌(例如echo PASSWORD | kinit && aklog.

我想在服务器进程中实现类似的东西,但不知道该怎么做。是否有任何“post-receive-data”回调样式钩子可用于从 Redis 服务器进程中运行 shell 命令?对于其他人可以就这个问题提供的任何建议,我将不胜感激。

4

1 回答 1

3

不——Redis 服务器不是为此而设计的,也不是为此目的而设计的。如果你真的坚持使用来自 Redis 服务器的事件来触发 shell 命令,你可以通过以下方式破解:

  • 跟踪服务器的日志文件并使用调用Lua 函数EVAL的脚本查找客户端调用生成的事件。redis.log
  • 使用来自队列的基本本地 Redis 客户端(例如redis-cli)运行循环BRPOP,完成工作并重复
  • 编写一些代码来充当一种守护进程,它使用 Redis 的 PubSub 通过通道接收消息来触发 shell 命令
  • 等等……

注意:WRT 到“Redis 服务器不是为此而设计的” - 如果您确实发现了一些允许您做您正在寻找的事情的漏洞,请将其报告为严重的安全问题。从这个意义上说,您可能想阅读http://antirez.com/news/96

于 2017-11-13T17:17:57.183 回答