6

我正在开发一个需要向远程服务器发送命令的应用程序。使用大量的 SSH 客户端库发送命令很容易。

但是,我希望在每个命令之间保留 shell 状态(即当前工作目录、环境变量等)。我见过的所有客户端库都没有这样做。例如,以下是不符合我要求的代码示例

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')是不可接受的。

4

2 回答 2

2

Net::SSH::Expect 可以满足您的需求,尽管“Expect”方式并不完全可靠,因为它将解析您的命令输出并尝试检测何时再次出现 shell 提示。

于 2011-07-21T08:33:35.397 回答
0

我不确定您到底在做什么,但您可以只启动一个 SSH 会话。如果您真的不能这样做,也许您可​​以对所有内容使用绝对路径。

于 2011-07-20T19:10:16.077 回答