gpt4 book ai didi

php - ssh2 通过 php 连接到 linux

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:45:41 26 4
gpt4 key购买 nike

我尝试通过 php 将我的 minecraft 白名单更新到我的 linux 服务器。连接正常,但我不知道他为什么不发送我的命令将用户添加到白名单。

这是我的代码:

$name=$_POST['name'];
$mc=$_POST['mc'];
if($ssh = ssh2_connect('127.0.0.1', 22)) {
if(ssh2_auth_password($ssh, 'root', 'password')) {
$stream = ssh2_exec($ssh, 'screen -R '.$mc.' && '.'whitelist add '.$name.' && whitelist reload');
stream_set_blocking($stream, true);
$data = '';
while($buffer = fread($stream, 4096)) {
$data .= $buffer;
}
fclose($stream);
echo $data;
}
}

最佳答案

您正在使用 && 加入命令,所有这些命令将在您当前的 shell 中一个接一个地执行,而不是在 screen 内。 screen 可以在选定的 session 中执行命令,但使用它自己的语法。参见 this question ,例如,或 manual .在您的情况下,命令必须如下所示:

screen -S session_name -X stuff $'whitelist add user_name && whitelist reload\n'

注意字符串末尾的 \n 符号。它是执行命令所必需的,因为 screen 不会真正执行它,screen 将“将指定的命令发送到正在运行的 screen session ”,如手册所述。考虑到 screen 将代替您键入命令。并且当您输入命令时,您必须按 Enter/Return 才能执行它。

在 PHP 中你可以这样执行命令:

$stream = ssh2_exec($ssh, "screen -S $mc -X stuff \$'whitelist add $name && whitelist reload\\n'");

关于php - ssh2 通过 php 连接到 linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37500760/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com