簡體   English   中英

通過 PHP 執行 shell 命令?

[英]Executing shell commands via PHP?

我正在嘗試將 ssh 發送到遠程服務器以檢查是否存在特定文件。

我可以在命令行中輸入 ssh 但是每當我嘗試使用我的腳本時它不會返回任何內容/我必須輸入“exit”並按回車鍵才能返回命令行。

腳步:

  1. ssh root@website.com
  2. 光盤..
  3. ls提款機

我將所有這些命令放入輸出中,因此它們看起來像這樣:

$output = shell_exec("ssh root@website.com");
$ouput1 = shell_exec("cd ..");
$ouput2 = shell_exec("ls *ATMEXTRACT*");

echo($output2);

我對為什么這直接在命令行中有效但在腳本中失敗感到困惑。 任何幫助深表感謝

以下是您以交互方式執行的操作:

  • 在當前 shell 中運行ssh root@website.com root@website.com
    • ssh中輸入cd..
    • ssh中輸入ls *ATMEXTRACT*
    • ssh中的輸入exit ,現在退出
  • 找回原來的 shell

這是您在腳本中執行的操作:

  • 在新的 shell 中運行ssh root@website.com root@website.com 並退出
  • 在第二個 shell 中運行cd..並退出它
  • 在第三個 shell 中運行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.

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