簡體   English   中英

Phpseclib SSH2 - 如何在 Exec 上抑制 Sudo 提示輸出

[英]Phpseclib SSH2 - How to Suppress Sudo Prompt output on Exec

一直在與這個摔跤一點點。 我目前正在開發一個 PHP 應用程序,該應用程序連接到自定義 API 並通過 Phpseclib 的 SSH2 庫對服務器執行更改。

$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這個 Bash 腳本 ('delete_property.sh') 結果會輸出 sudo 密碼提示。 我已經調整了我的請求並通過命令行(在 Putty 中)執行我的 Bash 腳本在 Bash 腳本完成后不再輸出提示文本。

為什么在使用 Phpseclib 時不是這種情況?

只需將用戶添加到 sudorious 文件。

  1. 打開終端。
  2. 輸入“sudo visudo”
  3. 在文件末尾添加“youruser ALL=(ALL) NOPASSWD:ALL”,然后將“youruser”替換為您的真實用戶。
  4. 保存並退出。

現在,您的用戶使用 sudo 的每一個命令都將在不詢問密碼的情況下執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM