编辑 1:删除了句子:“,首先“必须转义,例如\"
,但是”,我的错误是没有意义的。
编辑 2:添加了 $cmd 的内容
编辑 3:添加了可理解的代码示例
我在使用 Perl 的 Net::SSH::Expect 模块与瞻博网络设备 (JunOS) 通信时遇到问题。
在 JunOS 中,某些命令需要使用双引号。当我手动连接到设备时,会出现一个虚构的命令,例如:show something | 匹配“这个|那个”可以正常工作。
通过 Net::SSH::Expect 模块使用此命令时,该命令根本不会返回输出。
这是会话的打开方式
$session = Net::SSH::Expect->new(
host => $device->{ip},
port => $port // 22,
ssh_option => $options // '',
user => $username,
password => $password,
raw_pty => 1,
timeout => $session_timeout)
并且正在使用“$session->send($cmd);”发送命令 ,然后使用 before() 函数检索。
$session->send($cmd);
unless($session->waitfor($device->{promptSSH}, $cmd_timeout)) {
$logger->warn("$device->{hostname} ($device->{ip}) : SSH - Echec (Timeout) de la commande $cmd");
$data->{'timeout'} = 1; # status flag
}
@{$data->{'output'}} = $session->before();
return $data;
其中 $cmd 将根据示例包含:show interfaces diagnostics optics | 匹配“激光输出功率|激光接收器功率”
如果我不转义双引号,我们会得到这个奇怪的输出
请注意,这些命令是从系统中的一个简单文本文件中读取的,这里是摘录
我完全一无所知,有人可以帮助我吗?
干杯