DebianマシンのどこかにNICカードがあります。マシンの電源はオフになっていますが、後で(別のDebianマシンから)wake-on-lanマジックパケットを送信してウェイクアップできるように、NICカードがオンになっているかどうかを知る必要があります。カードのMACアドレスを持っています。 MACでイーサネットカードにpingを実行して、イーサネットカードがオンになっているかどうかを確認する方法はありますか?
ARPエントリを作成してみました:
arp -s 192.168.2.2 00-0c-0d-ef-02-03 ping 192.168.2.2
NICカードにこのIPアドレスがないため、機能しませんでした。そのため、NICカードはping要求を受信しますが、応答しません。これを回避する方法はありますか?
Iイーサネットウェイクパッケージを使用してwake-on-lanメッセージを送信しています。
回答
ツールを使用した方が幸運かもしれません。代わりにarping
。ツールping
は、 OSIモデルのレイヤー3レベルで機能します。 、arping
はレイヤー2で機能します。
ただし、このツールを使用する場合は、システムのIPを知る必要があります。2つのバージョンがあります。それは、ほとんどのUnix(Alexey Kuznetsov)に含まれている標準のものであり、IPアドレスのみを処理できるバージョンです。 他のバージョン(Thomas Habets “)は、おそらくMACアドレスを使用してクエリを実行できます。
$ sudo arping 192.168.1.1 -c 1 ARPING 192.168.1.1 from 192.168.1.218 eth0 Unicast reply from 192.168.1.1 [00:90:7F:85:BE:9A] 1.216ms Sent 1 probes (1 broadcast(s)) Received 1 response(s)
arping
はping
と同様に機能しますが、ICMPパケットを送信する代わりに、ARPパケットを送信します。
システムの取得 ” ■MACのみを使用するIP
MACからIPへの逆ルックアップを実行する方法はいくつかあります。
-
nmap
$ nmap -sP 192.168.1.0/24
次に、arpキャッシュで対応するマシン
arp -an
を探します。 -
fping
$ fping -a -g 192.168.1.0/24 -c 1
次に、上記と同じように、arpキャッシュを調べます。
-
ping
$ ping -b -c1 192.168.1.255
次に、上記と同じように、arpキャッシュを調べます。
-
nbtscan(Windowsのみのホスト)
$ nbtscan 192.168.1.0/24 Doing NBT name scan for addresses from 192.168.1.0/24 IP address NetBIOS Name Server User MAC address ------------------------------------------------------------------------------ 192.168.1.0 Sendto failed: Permission denied 192.168.1.4 MACH1 <server> <unknown> 00-0b-12-60-21-dd 192.168.1.5 MACH2 <server> <unknown> 00-1b-a0-3d-e7-be 192.168.1.6 MACH3 <server> <unknown> 00-21-9b-12-b6-a7
コメント
回答
NICだけでは応答が送信されないため、通常のNICにpingを実行できません。
実行中のコンピューターのみが応答を送信できます
通常のネットワークインターフェイスカードは、それ自体では応答を送信しません。そのためには、常にコンピューター上で実行中のソフトウェアが必要です。
コンピューターのCPUの電源がオフの場合、pingに応答する実行中のソフトウェアはありません。
Wake-on-LANは単方向です
Wake-on-LAN を使用すると、コンピュータはNICのみの電源を部分的にオンにして受信できますイーサネットフレームとその中の魔法のウェイクアップシーケンスを探しますが、NICはそれでも応答を送信しません。 Wake-on-LANは厳密に単方向です。応答は送信されません。
例外
たとえば、完全な TCPハンドシェイクオフロードを実装するもののように、それ自体で応答を送信できる特定の特別なNICがあります。 a>。
コメント
- +1 —これがOP ‘の質問。 ” Wake-on-LANは単方向です”。
回答
ether-wake
コマンドはMACアドレスで機能するため、(a)IPアドレスは必要ありません。(b)害を及ぼすことなくコマンドを送信できます(すでに起動している場合、起動しても影響はありませんか?)
arp -an
を実行し、MACをgrepして、ターゲットホストのIPを取得します。ただし、arpはキャッシュであるため、キャッシュから「タイムアウト」した可能性があります(それでも「アウェイク」している可能性があります)。次に、ブルートフォース方式を使用してIPを検索する必要がある場合があります。たとえば、次のようになります。
sudo nmap -sP 192.168.2.0/24 | less
(次に、00:0c:0dを探します。 ef:02:03)-ファイアウォールなどが邪魔にならない場合に限ります!
コメント
- 私は’今すぐマシンをウェイクアップしたくない。しかし、NICがメッセージを受信できるようにしたいので、オフサイトに移動してWOLパケットを介してマシンの電源を入れたときに、電源が入ることがわかります。そのため、’ IPまたはMACでpingを実行し、ウェイクアップしないようにします。
- スリープマシンはpingに応答しません。マシンの電源がオンになっていて、IPでpingを実行すると(そしてホストが応答すると)、arpキャッシュにエントリが配置されます。そこにあるエントリがホストのMACアドレスと一致する場合、それが機能する合理的な可能性があります(
ether-wake
が機能しない原因となる可能性のある他のネットワークファイアウォール、ルーター、およびその他の物理的な問題を除くそれに達する)。実際にオンサイトで別のホストにアクセスし、ターゲットマシンをスリープ状態にして、ether-wake
を試行します。 WOLの動作の性質上、リクエストはホストと同じサブネット上で送信する必要があります。 - @DravSloan Bonjourプロキシ(例: Apples Time Capsuleは、この問題を処理するための非常に独創的な方法です。マシンはスリープしますが、ルーターはそれに応答し、プロキシが’処理できなくなった場合にのみウェイクアップします。
- しない’最初にテストせずにWOLに依存しないでください。その場合は、IPMIカードを入手してください。
回答
私のアプリケーションは、ワークステーションにRSYNCするサーバーでした。ワークステーションのドキュメントディレクトリを取得します…しかし、ワークステーションには保証されたIPアドレスはありませんでしたが、既知のMACアドレスがありました(IPアドレスはDHCPによって実行されました)。このコードはpingのみを使用します。
export COUNTER=1 while [ $COUNTER -lt 255 ] do #ping $1$COUNTER -c 1 -w 400 | grep -B 1 "Lost = 0" & # activate all 254 addresses in the subnet.. dont really need to grep the ping output ping 192.168.0.$COUNTER -c 1 -w 4 2> /dev/null | grep -B 1 " 0\% packet loss" > /dev/null & COUNTER=$(( $COUNTER + 1 )) done # wait till 254 background processes finished wait # the arp cache will automatically flush it"s incomplete entries in about 10 minutes... #echo "finished" # #SRC_SERVER_IP="192.168.0.160:873" SRC_SERVER_IP=$(arp -a | grep "00:22:4d:81:8f:76" | awk "{print $2}" | sed "s/[()]//g")":873" if [ $SRC_SERVER_IP == ":873" ] ; then echo "ws1.example.com is not on the network... exiting..." exit 0 fi
回答
これはMACアドレスを介してpingを実行する簡単なスクリプトです。保存して実行するだけです。例
macping aa:bb:cc:dd:ee:ff
結果をデイジーチェーン接続して、条件付きで他のことを行うこともできます。例:
macping aa:bb:cc:dd:ee:ff && echo do something if online || echo do something if offline
–
#!/bin/bash network=192.168.1.1/24 if [ "$#" -ne 1 ]; then echo Usage example: $0 aa:bb:cc:dd:ee:ff; exit 2; fi; nmap -sP $network >& /dev/null ip=$(arp -n | grep $1 | awk " { print $1 }") ping $ip -n -q -c 2 -i 0.2 -w 1 >& /dev/null if [ $? -eq 0 ]; then echo Device is online \($ip\) else echo Device is offline exit 1 fi;
回答
これは異なることに依存しませんarpingのバージョンまたは複雑なbashスクリプト:
ping $(arp-scan --localnet | grep 80:1f:02:fa:90:b7 | awk " { printf $1 } ")
実行速度がはるかに速いように見えるため、arpではなくarp-scanを使用しました。
arping
MACアドレスをパラメータとして使用できます:arping -c 5 38:e7:d8:63:5e:a6
arping
からMACアドレスへ:はい、Linuxからの arping 1。の2つの実装があります iputils 2。 ThomasHabetsによるarping 。 — 2。実装のみがMACアドレスにpingを実行できますが、そのようなpingは非常に注意が必要です。pingされたマシンにはTCP / IP(少なくともIPアドレス)が構成されている必要があり、ブロードキャストIPアドレスへのpingに応答できます。