Запуск Clogin через PHP exec ()

0

Я пытаюсь создать страницу PHP, на которую я могу пойти, чтобы получить информацию от переключателей cisco, которые у нас есть. Мой единственный текущий вариант для чтения данных из них - использовать прогорклый клогин.

Когда я запускаю:

sudo -u www-data /usr/lib/rancid/bin/clogin -f /home/www-data/.cloginrc -c 'show run int fa 0/1' as-switch-123 2>&1

он запускает и возвращает информацию о порту 0/1.

Однако, когда я запускаю следующее:

<?php

    ini_set('display_errors',1);
    error_reporting(E_ALL);


    $mainCommand = "/usr/lib/rancid/bin/clogin -f /home/www-data/.cloginrc -c 'show run int fa 0/1' as-switch-123 2>&1";


    $outputArray = array();
    echo exec($mainCommand,$outputArray,$returnCode);
    echo '<br /><br />';
    var_dump($outputArray);
    echo '<br /><br />';
    var_dump($returnCode);

?>

Я получаю возврат из $ outputArray, показанного ниже:

array(5) { 
    [0]=> string(16) "no such variable" 
    [1]=> string(31) " (read trace on "env(HOME)")" 
    [2]=> string(23) " invoked from within" 
    [3]=> string(40) ""set password_file $env(HOME)/.cloginrc"" 
    [4]=> string(47) " (file "/usr/lib/rancid/bin/clogin" line 66)"
} 

Кто-нибудь знает, почему это не дает мне выход так же, как когда вы запускаете его из sudo?

Теги:

2 ответа

0

Благодаря symcbean я просмотрел /usr/lib/rancid/bin/clogin, а по строке 66 он имел следующее:

set password_file $ env (HOME)/. cloginrc

-f/home/www-data/.cloginrc не перекрывал вышеизложенное, и я не мог правильно установить $ env (HOME).

Для быстрого и, вероятно, небрежного исправления я вручную установил строку 66 для чтения set password_file/home/www-data/.cloginrc, и она сработала.

0

Ошибка, которую вы получили, говорит мне, что возникла проблема с переменной окружения, и единственная переменная среды в строке кода, которую она пыталась обработать, - $ HOME.

Я ожидаю, что вы сможете его скопировать, используя:

sudo -u www-data "HOME= ; /usr/lib/rancid/bin/clogin -f /home/www-data/.cloginrc -c 'show run int fa 0/1' as-switch-123 2>&1"

Точно так же установка значения внутри команды, выполняемой в PHP, должна решить проблему.

$mainCommand = "HOME=/home/www-data && /usr/lib/rancid/bin/clogin -f /home/www-data/.cloginrc -c 'show run int fa 0/1' as-switch-123 2>&1";
  • 0
    Новый $ mainCommand имел ту же ошибку, что и раньше. Также при запуске команды sudo, если она все еще работает, но сначала выдается следующая ошибка sudo: use: sudo -h | -К | -k | -V использование: sudo -v [-AknS] [-g группа] [-h хост] [-p приглашение] [-u пользователь] использование: sudo -l [-AknS] [-g группа] [-h хост] [-p приглашение] [-U пользователь] [-u пользователь] [команда] использование: sudo [-AbEHknPS] [-r роль] [-t тип] [-C номер] [-g группа] [-h хост] [-p приглашение] [-u пользователь] [VAR = значение] [-i | -s] [<команда>] использование: sudo -e [-AknS] [-r роль] [-t тип] [-C num ] [-g группа] [-h хост] [-p приглашение] [-u пользователь] файл ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню