Hinemos にはカスタムトラップという JSON フォーマットのリクエストを Hinemos に送信することで監視設定を起動することができる機能があります。
curl を使用した例については カスタムトラップ監視を利用する 等で紹介されています。
Linux で実行した場合は問題ないと思うのですが、Windows で実行した場合、「curl: (52) Empty reply from server」のエラーが発生していたため、テスト目的の curl を Windows から送信する場合の暫定的な対応を残しておきたいと思います。
Windows からカスタムトラップを起動させる
コマンドプロンプトから実行する
今回使用しているコマンドは次の内容相当のものとなります。
curl -H "Accept: application/json" -H "Content-type: application/json; charset=utf-8" -X POST -d '{"FacilityID":"rhel-hinemos","DATA":[{"DATE":"2024-09-03 22:34:41","MSG":15,"KEY":"key_num","TYPE":"NUM"}]}' http://10.200.0.8:8082 -v
このコマンドを Linux で実行した場合は、次の画像のように正常に終了しています。
同じコマンド (改行の設定は Windows 向けに変更) を Windows で実行してみると、前述のようにエラーが発生します。
要求を UTF-8 で送信したいのですが、コマンドプロンプトから送信した場合、これが上手く実行できずエラーとなってしまっているようです。
暫定の対応としては、送信したいリクエストを UTF-8 のテキストファイルとして保存して、そのファイルの内容を送信するようにします。以下のコマンドの例では input.txt は UTF-8 で保存されたテキストファイルとなります。
curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d "@c:\temp\input.txt" http://10.200.0.8:8082 -v
このような送信を実行した場合は期待した動作となり、正常にリクエストを送信することができます。
また、cmd.exe / powershell.exe から実行した場合はこのエラーとなるようで、、pwsh.exe で起動したターミナルであればファイルを使用しなくても直接送信することができました。
PowerShell から実行する
PowerShell から実行する場合は次のようなスクリプトで実行できます。
$uri = "http://10.200.0.8:8082" $body = @{ "FacilityID" = "rhel-hinemos" "DATA" = @( @{ "DATE" =(Get-Date -Format "yyyy-MM-dd HH:mm:ss").ToString() "TYPE" = "NUM" "KEY" = "key_num" "MSG" = 15 } ) } $json = $body | ConvertTo-Json -Compress $utf8bytes = [System.Text.Encoding]::UTF8.GetBytes($json) $header = @{ "Content-type" = "application/json;charset=utf8" "Content-Length" = $utf8bytes.Length } Invoke-WebRequest -Uri $uri -Method Post -Headers $header -Body $utf8bytes -Verbose
このようなスクリプトを使用することで PowerShell からカスタムトラップのリクエストを送信することができます。