php отправляет команду в неправильный каталог tmux - PullRequest
0 голосов
/ 10 февраля 2020

Итак, в основном я пытаюсь отправить команды на мой сервер cs go, когда нажимаю кнопку, чтобы мне было легко управлять из любого места. Когда я нажимаю кнопку, запускается следующий блок кода 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), единственная проблема в том, что я понятия не имею, как это сделать.

1 Ответ

0 голосов
/ 10 февраля 2020

Вы можете изменить сокет, к которому обращается tmux, с помощью -S или установив TMUX_TMPDIR, например tmux -S/tmp/tmux-1001/default send-keys ....

Однако, похоже, что он работает как UID 33, поэтому он не будет быть в состоянии общаться с вашим сервером tmux (это UID 1001), если вы не дадите ему разрешения для сокета. Обратите внимание, что любой пользователь, имеющий доступ к вашему сокету tmux, имеет полный доступ к вашей учетной записи, поэтому было бы неразумно делить его с тем же UID, что и процесс сервера Inte rnet.

Лучший способ для этого может потребоваться, чтобы код PHP создал временный файл, который могли прочитать оба пользователя (это должен быть каталог, доступный для записи для всего мира или, что лучше, принадлежащий общей группе), а затем запустил что-то в качестве вашего пользователь, который проверяет этот файл и делает то, что вы хотите (даже если он такой же простой, как while :; do [ -f /tmp/csgo/mybutton ] && (rm /tmp/csgo/mybutton; tmux send-keys ...); sleep 1; done во втором окне tmux).

...