phpseclib NET / SSH2从发布表单中提取变量

时间:2019-05-23 03:12:36

标签: php phpseclib ssh2

我正试图将POST变量放入$ ssh-> exec中。命令中未使用post变量。我希望在adduser中使用$ domain和$ password,如下所示。

我在centos 7服务器php 7.3上运行此命令,我可以回显变量,但不能在命令中使用它。

我可以回显$ domain和$ password。

一个示例帖子是

用户名:adada.com 和 密码:passwordwe3

此命令与输入的字符串正常工作。

set_include_path(get_include_path() . PATH_SEPARATOR . '/var/www/html/phpsec');
include ('Net/SSH2.php');
$ssh = new Net_SSH2('hostname');
if (!$ssh->login('username', 'password')) {
exit('Login Failed');
}

$domain = $_POST['domain'];
$password = $_POST['password'];

echo $ssh->exec('adduser $domain -m -p $password -d /var/www/shared/$domain/public_html');
echo $ssh->exec('su $domain');
echo $ssh->exec('pwd');
die();

来自表格的错误如下。 adduser:无效的用户名'/ var / www / shared // public_html'/ root

1 个答案:

答案 0 :(得分:0)

echo $ssh->exec('adduser $domain -m -p $password -d /var/www/shared/$domain/public_html');
echo $ssh->exec('su $domain');

当您应该使用双引号时,您正在使用单引号。试试这个:

echo $ssh->exec("adduser $domain -m -p $password -d /var/www/shared/$domain/public_html");
echo $ssh->exec("su $domain");

此外,将这些变量传递给escapeshellarg可能是一个好主意。