Как программно получить сеанс оболочки ssh с отслеживанием состояния?

Я работаю над приложением, которое должно отправлять команды на удаленные серверы. Отправлять команды достаточно легко с помощью множества клиентских библиотек SSH.

Однако я бы хотел например, состояние оболочки (то есть текущий рабочий каталог, переменные среды и т. д.) сохраняется между каждой командой. Все клиентские библиотеки, которые я видел, не делают этого. Например, ниже приведен пример кода, который выполняет , а не делаю то, что я хочу:

use Net::SSH::Perl;
my $server = Net::SSH::Perl->new($host);
$server->login($user, $pass);

$server->cmd('cd /var');
$server->cmd('pwd');      # I _would like_ this to output /var

Между отправкой команд будут выполняться другие задачи, поэтому комбинирование команд вроде $ server-> cmd ('cd / var; pwd') недопустимо.

6
задан Josh Johnson 30 December 2011 в 15:23
поделиться