【发布时间】:2020-03-09 22:20:36
【问题描述】:
一直在和这个搏斗一点。我目前正在开发一个连接到自定义 API 并通过 Phpseclib 的 SSH2 库对服务器进行更改的 PHP 应用程序。
$ssh = new Net_SSH2($server_name);
if(!$ssh->login("username", "password")) {
$result['result'] = 'ERROR';
$result['message'] = 'Login failed';
} else {
$result['propertyFolderDeleted'] = $ssh->exec("cd /var/www/sites; echo 'password' | sudo -S /usr/local/bin/delete_property.sh -sc $company_name -sp $property_name");
return '{"data":'.json_encode($result).'}';
}
生成的输出:
{"data":{"propertyFolderDeleted":"[sudo] password for portals: "}}
非常简单,我的应用程序使用 SSH2 到 exec 我的服务器上的一些 Bash 脚本。在大多数情况下,这可以完美运行,但由于某种原因,exec-uting 这个 Bash 脚本('delete_property.sh')会输出 sudo 密码提示。
我已经调整了我的请求并通过命令行(在 Putty 中)执行我的 Bash 脚本不再在 Bash 脚本完成后输出提示文本。
为什么在使用 Phpseclib 时不是这样?
【问题讨论】:
标签: php bash ssh sudo phpseclib