[英]Executing shell commands via PHP?
我正在嘗試將 ssh 發送到遠程服務器以檢查是否存在特定文件。
我可以在命令行中輸入 ssh 但是每當我嘗試使用我的腳本時它不會返回任何內容/我必須輸入“exit”並按回車鍵才能返回命令行。
腳步:
我將所有這些命令放入輸出中,因此它們看起來像這樣:
$output = shell_exec("ssh root@website.com");
$ouput1 = shell_exec("cd ..");
$ouput2 = shell_exec("ls *ATMEXTRACT*");
echo($output2);
我對為什么這直接在命令行中有效但在腳本中失敗感到困惑。 任何幫助深表感謝
以下是您以交互方式執行的操作:
ssh root@website.com
root@website.com
ssh
中輸入cd..
ssh
中輸入ls *ATMEXTRACT*
ssh
中的輸入exit
,現在退出這是您在腳本中執行的操作:
ssh root@website.com
root@website.com 並退出cd..
並退出它ls *ATMEXTRACT*
並退出它您可以嘗試打開 ssh 命令並與之交互,但您也可以省去麻煩並使用ssh
的命令行功能來指定要運行的命令:
$output = shell_exec("ssh root@website.com 'cd .. && ls *ATMEXTRACT*'");
請注意,這可能會因 PHP 網站腳本而失敗,因為您需要設置身份驗證機制。 即使ssh root@website.com
在您手動登錄 web 服務器並嘗試時無需密碼即可連接也是如此。
我建議您使用 PHP 的 ssh2 模塊。 這將幫助您連接可通過適當的 SSH PORT 訪問的任何遠程服務器。
您需要檢查您的主機服務器上是否安裝了 OpenSSL 和 ssh2 等模塊。 如果不是,請檢查此https://ehikioya.com/install-ssh2-php/並安裝上述模塊。
一旦安裝並啟用這些模塊。
遵循此代碼。
$server="website.com";
$server_pwd="Password";
//creating connection using server credentials
$connection = ssh2_connect($server, 22);
//authenticating username and password
if(ssh2_auth_password($connection, 'root', $server_pwd)){
echo "connected"
}else{
echo "could not connect to server";
}
ssh2_exec($connection, "ls /FULL_PATH/ATMEXTRACT"); //run your command here
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.