【问题标题】:php is sending command to the wrong tmux directoryphp 将命令发送到错误的 tmux 目录
【发布时间】:2020-02-10 06:42:07
【问题描述】:

所以基本上,当我按下按钮时,我会尝试向我的 csgo 服务器发送命令,这样我就可以从任何地方轻松管理。当我按下按钮时,会运行以下 php 代码块:

    if (isset($_POST['test']))
{
    echo shell_exec("tmux send-keys -t ze \"sv_cheats\" ENTER 2>&1");
}

我的 tmux 会话没有得到任何输入,并且 回声说有no server running on /tmp/tmux-33/default

我认为正在发生的事情是我的 apache 服务器正在创建自己的某种 tmux 目录,因为该文件路径存在:/tmp/systemd-private-cf2b583fac384d89981b15c753c6b8bb-apache2.service-jpCxqB/tmp/tmux-33,这就是它的外观。

我相当确定它需要在哪里是/tmp/tmux-1001(其中有一个名为“default”的文件),唯一的问题是我不知道如何做到这一点。

【问题讨论】:

    标签: php apache server debian tmux


    【解决方案1】:

    您可以使用-S 或通过设置TMUX_TMPDIR,例如tmux -S/tmp/tmux-1001/default send-keys ... 来更改与tmux 对话的套接字。

    但是,它似乎以 UID 33 运行,因此除非您授予它在套接字上的权限,否则它将无法与您的 tmux 服务器(即 UID 1001)通信。请注意,任何有权访问您的 tmux 套接字的用户都可以完全访问您的用户帐户,因此使用与面向 Internet 的服务器进程相同的 UID 共享它是不明智的。

    一个更好的方法可能是让 PHP 代码创建一个两个用户都可以读取的临时文件(它需要是一个全球可写目录,或者 - 更好 - 一个由共享组拥有的目录),然后拥有以您的用户身份运行的东西会检查该文件并执行您想要的操作(即使它像第二个 tmux 窗口中的 while :; do [ -f /tmp/csgo/mybutton ] && (rm /tmp/csgo/mybutton; tmux send-keys ...); sleep 1; done 这样简单)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-27
      • 1970-01-01
      • 1970-01-01
      • 2019-01-07
      • 2013-04-25
      • 2023-03-04
      • 2012-12-24
      相关资源
      最近更新 更多