2014-11-21 2 views
0

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

Когда я бегу:

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?

ответ

0

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

Я ожидаю, что вы могли бы replcate это с помощью:

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 | -k | -V Использование: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user] Использование: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [команда] Использование: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [- h-host] [-p prompt] [-u user] [VAR = значение] [-i | -s] [] использование: sudo -e [-AknS] [-r role] [-t type] [ -C num] [-g group] [-h host] [-p prompt] [-u user] file ... – xloner12

0

Благодаря symcbean я посмотрел в/USR/Lib/прогорклым/бен/clogin и на линии 66 он имел следующие:

набор файл_паролей $ ENV (HOME)/cloginrc

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

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

Смежные вопросы