如何捕获包含子字符串的 SSH 命令输出? - Laravel 5.8

How to catch SSH command output contain sub string ? - Laravel 5.8

我正在尝试捕获命令的输出并相应地抛出 error/success。

$resultFromServer = []; 
SSH::run($command, function($line)
{
    echo $line.PHP_EOL;

    if($line!= null) {
        array_push($resultFromServer, $line); // crash 
    }
});

dd($resultFromServer);

查看我的输出

WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /root/.kube/config WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /root/.kube/config Error: open test.yaml: no such file or directory

[]

我正在尝试查找此 字符串 Error: 以及它右边的任何内容,我将在我的警报消息中显示。

Error: open test.yaml: no such file or directory

我在努力

将每一行存储到一个数组中并循环检查字符串是否包含,但我什至不能将它存储到数组中。

我一直遇到崩溃 - if - 我取消注释该行

如何防止崩溃?我需要添加一些 sleep() 吗?

因为SSH::run使用了闭包,所以$resultFromServer不存在于子函数的范围内。您需要使用 use 关键字将其传递,并将其作为参考传递,因为您是在内部对其进行修改:

SSH::run($command, function($line) use (&$resultFromServer)
{
    echo $line.PHP_EOL;

    if($line!= null) {
        array_push($resultFromServer, $line); // crash 
    }
});