如何知道命令已执行并完成执行另一个命令(ssh-php)

时间:2017-08-02 08:08:48

标签: php linux bash ssh cmd

我正在我的网页上创建一个按钮。我希望当有人按下此按钮时,在我的第一台服务器上执行Linux命令进程(例如" cd file"&#34 ; ./ file_to_execute" ..)当这些命令完成并完成后,我想通过ssh在另一台服务器上连接并执行另一个命令。 问题是我怎么知道之前的命令已经完成以进入第二部分,即在另一台服务器上连接。 恢复 : 第一步连接第一台服务器,执行一些命令 =>当这些命令完成时(部分我不知道该怎么做) 第二步:连接另一台服务器并执行其他命令。 我正在寻找一种方法,允许我添加一些弹出窗口,告知用户我的网页,他完成了第一步,然后他开始了第二步。



<?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 />";
  }
?>
&#13;
&#13;
&#13;

由于

PS:对不起我的英语,我来自Barcelone

1 个答案:

答案 0 :(得分: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变量中返回的内容创建条件。