【问题标题】:Phpseclib SSH2 - How to Suppress Sudo Prompt output on ExecPhpseclib SSH2 - 如何在 Exec 上抑制 Sudo 提示输出
【发布时间】: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


    【解决方案1】:

    只需将用户添加到 sudorious 文件中即可。

    1. 打开终端。
    2. 输入“sudo visudo”
    3. 在文件末尾添加“youruser ALL=(ALL) NOPASSWD:ALL”并将“youruser”替换为您的真实用户。
    4. 保存并退出。

    现在,您的用户使用 sudo 的每一个命令都将在不询问密码的情况下执行。

    【讨论】:

      猜你喜欢
      • 2011-08-09
      • 2020-10-22
      • 2011-12-28
      • 2019-05-29
      • 2010-12-09
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多