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」の構文は何ですか?