2017-02-24
Java覚書 サーバ名からMACアドレスを取得
Windows上で動いている場合にしか利用できない方法だけど、メモ。
JavaでサーバのMACアドレスを簡単に取得する方法を漁ってみたのだが、結局は「ARPコマンドを実行する」ぐらいしかないようである。
なので、ちょっとガックシきてしまった。
1) target に サーバ名を設定。
2) Windowsコマンド arp に、targetサーバのIPアドレスを設定して実行。
3) コマンドプロンプトの出力からtargetサーバのIPアドレスのMACアドレスを取得
String target = "ここにサーバ名を設定";
String adr= "";
try {
// 1)
InetAddress ip = InetAddress.getByName(target);
// 2)
ProcessBuilder pb = new ProcessBuilder("arp", "-a", ip.getHostAddress());
pb.redirectErrorStream(true);
Process proc = pb.start();
proc.waitFor();
// 3)
InputStream is = proc.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
try {
for (;;) {
String line= br.readLine();
if (line == null) break;
if (line.indexOf(ip.getHostAddress()) >= 0) {
adr = buf.substring(23,45).trim();
}
}
} finally {
br.close();
}
if (res.length() > 0) {
System.out.println("Server ["+ target+ "] , IP [" + ip.getHostAddress() + "] , MAC [" + adr + "]");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
}
参考URL
きしだのはてな「JavaでMACアドレスを取得する」
ひしだま’s 技術メモページ「Java > 外部プロセス起動」」