2017-08-02 78 views
0

我在網頁上創建了一個按鈕。我希望當有人按下此按鈕時執行一個Linux命令進程我的第一個服務器(如「cd文件」「./file_to_execute」..),當這些指令完成並完成時,我想通過SSH連接另一臺服務器並執行其他命令。 問題是我怎麼能知道之前的命令已經完成,繼續到另一個服務器上連接的第二部分。 繼續: 第一步連接第一臺服務器,執行一些命令 =>這些命令完成後(部分我不知道該怎麼做) 第二步:連接另一臺服務器並執行其他一些命令。 我正在尋找一種方法,可以讓我添加一些彈出信息,以通知用戶我的網頁已完成第一步,並開始第二步。如何知道一個命令是否已執行並完成執行另一個命令(ssh-php)

<?php 
 
$hostname = '192.177.0.252'; 
 
$username = 'pepe'; 
 
$password = '*****'; 
 
$commande = 'cd file && ./file_one.sh';  
 

 
if (false === $connection_first = ssh2_connect($hostname, 22)) { 
 
    echo 'failed<br />'; 
 
    exit(); 
 
    } 
 
else { 
 
    echo 'Connected<br />'; 
 
    } 
 
    
 
if (false === ssh2_auth_password($connection_first, $username, $password)) { 
 
    echo 'failed<br />'; 
 
    exit(); 
 
    } 
 
else { 
 
    echo 'done !<br />'; 
 
    } 
 
    
 
if (false === $stream = ssh2_exec($connection_first, $commande)) { 
 
    echo "error<br />"; 
 
    } 
 
?>

感謝

PS:對不起,我的英語,我從BARCELONE

回答

0

來處理事件,其中發生異常情況時,我會建議使用try/catch語句,如下所示:

try { 
    echo inverse(5) . "\n"; 
    echo inverse(0) . "\n"; 
} catch (Exception $e) { 
    echo 'Caught exception: ', $e->getMessage(), "\n"; 
} 

當您嘗試處理事件並需要知道它們何時完成時,有幾種方法可以實現此目的。您可以在命令執行後將布爾值設置爲true(就像您已經在做的那樣)。或者,您可以通過將輸出打印到txt文件,然後回顯此文件的返回來返回命令的輸出。請參見下面的代碼:

exec ('/usr/bin/flush-cache-mage > /tmp/.tmp-mxadmin'); 
$out = nl2br(file_get_contents('/tmp/.tmp-mxadmin')); 
echo $out; 

在這一點上,你可以創建基於斷什麼在$out變量返回的條件。

相關問題