2016-02-01 11 views
2

Я работаю над PHP-приложением, с которым я могу подключиться к RaspberryPI (под управлением Linux) через SSH2 phpseclib. Подключение к устройству и получение информации по «ls» - другим командам «pwd» работает нормально.phpeclib-SSH2 -> Создать переменную окружения с помощью команды exec

Но теперь я пытаюсь создать новую переменную среды - допустим, TEST_VAR - на устройстве, но это, похоже, не сработает.

После моего PHP-кода, чтобы попробовать, что:

$ssh = new Net_SSH2($host, $port, 10); 
if (!$ssh->login($user, $pass)) { 
    exit("Login Failed"); 
} 

// Test->Show the working directory 
echo $ssh->exec("pwd"); 
// Create an environment variable "TEST_VAR" with the value "Test" 
echo $ssh->exec("export TEST_VAR=Test"); 
// Give the content of the above created variable out 
echo $ssh->exec("echo \$TEST_VAR"); 

Создание переменной не работает , и я не могу понять, почему - потому что нет никаких ошибок. Возможно ли это с помощью phpseclib?

Я был бы очень благодарен за любую помощь и подсказки.

С уважением Саймон

ответ

1

$ssh->exec не сохраняет состояние. Таким образом, вы не можете сделать $ssh->exec('cd /some/random/path'); echo $ssh->exec('pwd') и ожидать его вывода /some/random/path.

У вас есть несколько вариантов.

  1. Цепочка команд. например. $ssh->exec("pwd; export TEST_VAR=Test; echo \$TEST_VAR");

  2. Использование интерактивного режима. например. $ssh->read('[prompt]'); $ssh->write("pwd\n"); $ssh->read('[prompt]'); $ssh->write("export TEST_VAR=Test\n");

  3. Поместите все команды, которые хотите запустить в сценарий оболочки, а затем запустите сценарий оболочки.

Подробнее:

http://phpseclib.sourceforge.net/ssh/examples.html#chdir

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

  • Нет связанных вопросов^_^