同じネットワークで特定のデバイスのIPを検出する方法

同じネットワークで特定のデバイスのIPを検出する方法

私はSSHを使用して同じ(Wi-Fi)ネットワーク上のLinuxラップトップに自分の(Android)携帯電話を接続したいという非常に一般的な状況にあります。 IPはDHCPによって割り当てられるため、クライアントのIPのみを事前に知ることができます。クライアントのIPを知ると、原則として、同じネットワーク上の可能なすべてのIPに対してsshコマンドを繰り返して、サーバーがリッスンしていることを確認できます。しかし、これは非常に非効率的なようです。それでは、SSHを使用してホストに接続できるように、ホストのIP(MACアドレスを知っている)をどのように把握できますか?他のソフトウェアも同様の機能を達成できることがわかっているので、必ず可能です。関連:SSH構成ファイルの静的エントリを使用できるように、クライアント(Linuxと仮定)でこのIPにホスト名を動的に割り当てることはできますか?

ベストアンサー1

これは2つのステップで実行できます。

ステップ1:

サブネットをスキャンしてARPキャッシュを埋めます。色々な方法がありますがおすすめですfping。端末で次のコマンドを実行してUbuntuにインストールします。

apt-get install fping

...その後、ネットワーク(サブネット192.168.10.0/24など)を検索します。

fping -g 192.168.10.0/24

これで、ARPキャッシュはサブネット上のデバイスのMACアドレスで埋められます。

ステップ2

ターゲットデバイスのみを表示するには、ARPキャッシュに適切なフィルタを適用します。次のコマンドを使用します(aa:bb:cc:dd:ee:ffデバイスのMACアドレスはどこにありますか?)。

arp -n | grep -i aa:bb:cc:dd:ee:ff | cut -c-15

出力はターゲットデバイスのIPアドレスです。

編集1:

例MACアドレスは、Linuxがこのように表示するため(大文字を使用するMicrosoft Windowsとは異なり)、小文字に変更されました。

編集2:

次のbashスクリプトは、ホストファイル(/etc/hosts)に次の名前のエントリを追加します。携帯電話これにより、その名前を使用してデバイスにアクセスできます。携帯電話。接続されたIPアドレスを更新するには、もう一度実行してください。とnameを希望の値に変更します。macsubnet

#!/bin/sh
name="cellphone"
mac=aa:bb:cc:dd:ee:ff
subnet=192.168.10.0/24
fping -g ${subnet}
ip="$(arp -n | grep -i ${mac} | cut -c-15)"
sed -i".bak" '/'${name}'/d' /etc/hosts
if [ -z "$ip" ]; then
    echo "Device not found!"
else
    echo "${ip}\t${name}" >> /etc/hosts
fi

おすすめ記事