如何解决Net :: SSH :: Expect +转义双引号时JunOS不会返回输出
编辑1:删除了以下句子:“首先,“必须逃脱\"
之类的,但是”,这是我的错误。
使用Perl的Net :: SSH :: Expect模块与Juniper网络设备(JunOS)通信时遇到问题。
对于某些命令,在JunOS中特别需要使用双引号。当我手动连接到设备时,将出现一个虚拟命令,例如:show something |。匹配“ this | that”可以正常工作。
通过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将包含以下示例: 显示界面诊断光学|匹配“激光输出功率|激光接收器功率”
如果我不对双引号进行转义,我们会得到奇怪的输出结果
请注意,命令是从系统中的简单文本文件中读取的,以下是摘录
我一无所知,有人可以帮我吗?
欢呼
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。