以下摘录来自免费软件mon
监控程序的 https.monitor。
$result = `$perl -e'use Net::SSLeay ; Net::SSLeay::SSLeay_add_ssl_algorithms() ; print join("$field_delim",Net::SSLeay::get_https("$site", "$port", "$path"))'`;
一些被监控的 HTTPS 服务器与具有自动检测和/或 TLS 的 OpenSSL (Net::SSLeay) 不兼容,因此需要将 Net::SSLeay::ssl_version 变量显式更改为 v3。
以下从命令行按预期工作,并将 ssl_version 显式更改为 3:
perl -e 'use Net::SSLeay; Net::SSLeay::SSLeay_add_ssl_algorithms() ; $Net::SSLeay::ssl_version = 3 ; print join("<>",Net::SSLeay::get_https("server.domain.internal", "443", "/"))'
我无法让它在 https.monitor perl 文件的原始行中工作。如上所述,perl 将提示以下错误:
Can't modify constant item in scalar assignment at -e line 1, near "3 ;"
我已经尝试了各种语法来编译这一行并采用 ssl_version 设置,但我似乎无法同时实现这两者。对 Net::SSLeay::ssl_version 变量赋值使用“=>”语法我可以编译它,但设置似乎没有“接受”。我使用了 $Net::SSLeay::ssl_version 和“$Net::SSLeay::ssl_version”、变量周围的花括号等,但我无法让它正常工作。
perl 脚本中“perl -e”行中“Net::SSLeay::ssl_version = 3”的语法应该是什么?