2017-08-02 140 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变量返回的条件。