ネットワーク設定情報の取得
日付 | 2007/06/11 |
---|---|
ID | 07-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)
あとは、目的の情報を文字列操作で取り出してください。