【问题标题】:How to catch SSH command output contain sub string ? - Laravel 5.8如何捕获 SSH 命令输出包含子字符串? - Laravel 5.8
【发布时间】:2021-11-07 02:59:13
【问题描述】:

我正在尝试捕获命令的输出并相应地抛出错误/成功。

$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: 以及它右侧的任何内容,我将显示在我的警报消息中。

错误:打开 test.yaml:没有这样的文件或目录

我正在尝试

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

我一直在崩溃 - 如果 - 我取消注释该行

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

【问题讨论】:

    标签: php laravel laravel-5 ssh laravel-5.8


    【解决方案1】:

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

    SSH::run($command, function($line) use (&$resultFromServer)
    {
        echo $line.PHP_EOL;
    
        if($line!= null) {
            array_push($resultFromServer, $line); // crash 
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 2012-02-18
      • 1970-01-01
      • 2023-03-31
      • 2018-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多