如何知道一个命令是否已执行并完成执行另一个命令(ssh-php)
问题描述:
我在网页上创建了一个按钮。我希望当有人按下此按钮时执行一个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
很
答
来处理事件,其中发生异常情况时,我会建议使用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
变量返回的条件。