2017-11-11 278 views
0

我在RHEL系统上运行Redis服务器,该服务器需要进程每24小时更新其AFS身份验证令牌。在Redis服务器进程中运行shell命令

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

我想实现在服务器类似的东西过程,但我不知道如何去做。是否有任何可用于在Redis服务器进程中运行shell命令的“post-receive-data”回调风格挂钩?我非常感谢任何其他人可以提供的建议

回答

2

否--Redis服务器不是为此目的设计的,并非专门用于此目的。如果您确实坚持使用来自Redis服务器的事件来触发shell命令,你可以通过破解:

  • 尾随服务器的日志文件,并寻找一个客户端调用生成EVAL与调用redis.log功能的Lua脚本的事件。
  • 运行一个基本的本地Redis的客户一个循环(如redis-cli)从队列BRPOP S,做的工作,并重复
  • 代码的东西作为一种后台程序的使用Redis的PubSub的接收通过信道消息触发shell命令
  • 等等...

注:WRT以“Redis的服务器没有专为” - 如果你发现了一些漏洞,让你做你在做什么寻找,请将其报告为严重的安全问题。从这个意义上说,你可能想要阅读http://antirez.com/news/96

+0

谢谢@ItamarHaber,这很有趣,但我担心我没有清楚地解释我的情况 - 我需要从服务器进程运行shell命令,而不是来自外部过程。我相信shell命令必须从运行服务器的进程(或该进程产生的进程)运行,以更新该进程的AFS令牌。 – duhaime

+0

好的,这样就不可能修改Redis源代码。 –