2016-05-20 21 views
0

これは初めてのことですが、検索しましたが、ほとんどの回答で同じ結果が得られました。MACアドレスの出力は「Found」と表示されます。クライアントマシンからMACアドレスを取得

私のコードは以下の通りです:

$ip = $_SERVER['REMOTE_ADDR']; 
$mac=shell_exec("arp -a ".$ip); 
$mac_string = shell_exec("arp -a $ip"); 
$mac_array = explode(" ",$mac_string); 
$mac = $mac_array[3]; 

if(empty($mac)) { 
    die("No mac address for $ip not found"); 
} 

echo($ip." - ".$mac); 

答えて

1

ああ、古いexec()shell_exec()対対passthru()質問。

実際され、実行が何であるかのコマンドを参照し、どのようなシステムが実際exec()を使用し、返却され、そして実行した後の両方var_dump()、その後、それを彼らがそれぞれの2番目と3番目のparamsとしてintarrayを渡すためにコマンド。例えば

:すべてがOKに行った場合

$cmd = "arp -a " . $ip; 
$status = 0; 
$return = []; 
exec($cmd, $return, $status); 
var_dump($status, $return); 
die; 

、その後、$statusはゼロと$returnがまたは空であってもなくてもよいはずです。しかし、$statusの場合は、の値になります。$returnの値が何であるかに注意してください。これは、コマンドを実行しようとしたときに起こっていることをシステムが伝えているためです。

Protip:コマンドが実行されている、REMOTE_ADDRは便利な何も返さないかもしれない場所に応じて、また、

#> which arp 
/usr/sbin/arp 

$cmd = "/usr/sbin/arp -a" . $ip; 

念頭に置いてクマを:として-でarpexec()フルパスを渡します。 IPアドレスを取得するにはいくつかの方法があります。必要なIPアドレスが何らかのプロキシの背後にある場合に特に便利です。

関連する問題