簡體   English   中英

使用phpseclib的PHP SSH命令

[英]PHP SSH Commands Using phpseclib

我正在使用http://phpseclib.sourceforge.net/連接到SSH並為節點服務器運行一些命令。

使用以下命令可以完美地工作:

echo "Restart...<br>";
echo "<pre>";
echo $ssh->exec('forever restartall');
echo "</pre>";

但是,一旦我使用以下代碼,它就不會顯示任何內容或運行任何內容:

echo "Starting...<br>";
echo "<pre>";
echo $ssh->exec('cd /var/www/html/game-api');
echo $ssh->exec('forever start server.js > stdout.txt 2> stderr.txt &');
echo "</pre>";

如果我直接從終端運行該命令,則該命令會完美運行。

任何想法?

引用http://phpseclib.sourceforge.net/ssh/examples.html#chdir

 echo $ssh->exec('pwd'); // outputs /home/username $ssh->exec('cd /'); echo $ssh->exec('pwd'); // (despite the previous command) outputs /home/username 

連續調用exec()

如果在交互式Shell上完成,則第一個密碼的輸出(取決於系統的設置)將與第二個密碼的輸出不同。 但是,以上代碼段將產生兩條相同的行。

原因是一旦運行exec()並刪除通道后,您對一次性shell所做的任何“狀態更改”都將消失。

您可以在Linux上通過執行$ssh->exec('cd /; pwd')解決此問題$ssh->exec('cd /; pwd')

暫無
暫無

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

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