JavaでIPアドレスをpingするためにICMPコマンドを実行したいと思います。
InetAddress.getByAddress("XXX.XXX.XXX.XXX".getBytes()).isReachable(1000);
ただし、セキュリティ制限があります。
Normal users are allowed to create raw sockets.
だから実行できません。私のアプリケーションをrootとして実行したくありません。それでは、CAP_NET_RAW機能を取得するには、アプリケーションを実行しているユーザーにどの権限を割り当てる必要がありますか?
答え1
答えの説明で述べたように、Java実行可能ファイルの機能を設定する必要があります。以下は実際の例です。
sudo setcap cap_net_raw+epi /usr/lib/jvm/jdk-19/bin/java
(パスをJava実行可能ファイルのパスに置き換えます)