[英]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 文件。
現在,您的用戶使用 sudo 的每一個命令都將在不詢問密碼的情況下執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.