Tips

ネットワーク設定情報の取得

日付2007/06/11
ID07-006
バージョン2004
プラットフォームMac / Win

例えば、MACアドレスなどのネットワーク設定情報を取得する必要があるかもしれません。しかし4Dにはネットワーク情報を直接取得するコマンドはありません。それでも取得する方法はあります。

MacOSの場合

MacOSの場合には、ターミナルコマンド「ifconfig」にオプション「-a」を渡す事でMACアドレスが取得できます。この場合、複数のLANカードがあるときや、複数のネットワーク設定があるときには、全てのネットワーク設定が値(文字列)として標準出力に返りますので、文字列を操作して必要なMACアドレスだけを抜き出す必要があります。もしネットワーク設定のうち1つだけに絞り込める、例えば「en0」の設定だけを取得すれば良い事が判っているならば、「ifconfig -L en0」とターミナルに入力すれば、情報を絞り込んだ形で標準出力に取り出せます。

このターミナルコマンドを4Dから使うためには、LAUNCH EXTERNAL PROCESS コマンドを使います。このケースの場合は、次のようにすれば en0 のネットワーク設定を変数「$t_outputStream」に取り出す事が出来ます。

`MacOS の場合
C_TEXT($t_fileName;$t_inputStream;$t_outputStream;$t_errorStream)
$t_fileName:="ifconfig"
$t_inputStream:=" -L en0"
LAUNCH EXTERNAL PROCESS($t_fileName;$t_inputStream;$t_outputStream;$t_errorStream)

Winowsの場合

Winowsの場合には、DOSコマンド「ipconfig」にオプション「/all」を渡す事でネットワーク設定情報が取得できます。DOSプロンプトでコマンドをタイプする時には「ipconfig /all」と打ち込みます。この場合、複数のLANカードがあるときや、複数のネットワーク設定があるときには、全てのネットワーク設定が値(文字列)として標準出力に返りますので、文字列を操作して必要な情報だけを抜き出す必要があります。この点においては、MacOSとは異なり、ネットワーク設定毎に取り出す事が出来ないので少々面倒です。

DOSコマンドは、LAUNCH EXTERNAL PROCESS コマンドで「cmd.exe」を通して使う事が出来ます。このケースの場合は、次のようにすればネットワーク設定を変数「$t_outputStream」に取り出す事が出来ます。

`Windows の場合
C_TEXT($t_fileName;$t_inputStream;$t_outputStream;$t_errorStream)
$t_fileName:="cmd.exe /c \"ipconfig /all\""
$t_inputStream:=""
LAUNCH EXTERNAL PROCESS($t_fileName;$t_inputStream;$t_outputStream;$t_errorStream)

あとは、目的の情報を文字列操作で取り出してください。

関連情報

Tips: コマンドプロンプトを表示しないで外部プロセスコール