终端告诉perl脚本有问题



我开始面临我们的一个perl脚本的问题,直到上个月,它一直运行良好。有人能帮我吗?

malformed JSON string, neither array, object, number, string or atom, at character offset 0
(before "<!doctype html><html...") at ad_lib.pm line 985.

下面是我的

my $response = from_json(qx{$BASE_HASH{CURL} -X GET -H "Content-Type: application/json" -H "Authorization:Basic $encoded" "https://localhost:9090/nwrestapi/v2/global/protectiongroups/" -k -1 2>/dev/null});

编码使用如下

my %BASE_HASH = ();
read_config(%BASE_HASH);
my $encoded = MIME::Base64::encode($BASE_HASH{NW_USER} . ":" . $BASE_HASH{NW_PW});

它看起来像是您从HTTP请求中得到的响应,过去是JSON字符串,现在是HTML文档。

from_json试图将其解码为JSON字符串,但失败了,因为它发现的既不是数组、对象、数字、字符串,也不是原子:它是HTML。

因此,问题更可能出现在您的外部服务(与您交谈的服务(上,而不是您使用的Perl脚本上。这也可以解释为什么它突然开始失败。

新版本的应用程序似乎没有什么高级版本的SSL,并且无法解码用户名/密码。我将分块/解码的值传递给文件,而不是$encoded,脚本运行良好。在执行脚本时,我发现新旧版本的唯一区别是SSL版本。在具有旧应用程序版本的系统上:TLS_ECDHE_RSA_with_AES_128_GCM_SHA256在具有新应用程序版本的系统上:TLS_ECDHE_RSA_with_AES_256_GCM_SHA384

需要弄清楚$encoded有什么问题,以及如何传递值,可能是引号等。

最新更新