Bash парсинг результата команды

307
08 ноября 2017, 03:29

Привет, сколько ищу- не могу найти ответ на решение вопроса. Имеется баш скрипт, который запускается с помощью php(связывается с CMS), при запуске он (bash скрипт) выдает результат в виде

------------------------------------------------------------------
                      I M P O R T A N T
------------------------------------------------------------------
                Account created
         loginname= "login", password= "password"
------------------------------------------------------------------

Каким образом можно отпарсить значения loginname и password с помощью того же пхп ?

Answer 1

Не проверял код, но должно отработать:

function getCredentials($input, $output) {
    preg_match('/'.$input.'=\s"(.*?)"/', $output, $matches);
    if(empty($matches[1])) {
        return null;
    }
    return $matches[1];
}
$output = shell_exec('command');
$login = getCredentials('loginname', $output);
$passsword = getCredentials('passsword', $output);

Функция принимает атрибут и вывод консоли и находит значение.

Или же можно всё сделать чуть иначе:

function getCredentials($output) {
    preg_match_all('/=\s"(.*?)"/', $output, $matches);
    var_dump($matches);
    if(empty($matches[1])) {
        return null;
    }
    return $matches[1];
}

Но в таком случае не понятно что в итоге может придти в ответе, в идеале должен быть ответ:

array(2) {
  [0]=>
  string(5) "login"
  [1]=>
  string(8) "password"
}
READ ALSO
Парсер видео youtube по ссылке

Парсер видео youtube по ссылке

Имеется давольно старый код, который парсит видео ютуба по ссылке

294
Отправка данных через html форму в MySQL

Отправка данных через html форму в MySQL

Доброго времени сутокИмеется WAMP сервер, файл index

212
Никак не работает функция flush

Никак не работает функция flush

На серверах с установленной Vestacp не работает функция flush, перепробовал уже все возможные варианты комбинацийВ php

207