1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- <?php
- namespace app\common\library;
- class MacIp {
- private static $return_array = array(); //返回带有MAC地址的字串数组
- private static $mac_addr; //MAC 地址
- public function __construct() {
- }
- /**
- * 获取当前机器的MAC地址
- */
- public static function getMac() {
- $os_type = PHP_OS;
- switch ( strtolower($os_type) ) {
- case "linux":
- self::forLinux();
- break;
- case "solaris":
- case "unix":
- case "aix":
- break;
- default:
- self::forWindows();
- break;
- }
- $temp_array = array();
- foreach (self::$return_array as $row) {
- foreach ($row as $value) {
- if (preg_match("/[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f]/i", $value, $temp_array) ) {
- self::$mac_addr = $temp_array[0];
- break;
- }
- }
- if (!empty(self::$mac_addr)) {
- break;
- }
- }
- unset($temp_array);
- return self::$mac_addr;
- }
- private static function forWindows(){
- @exec("ipconfig /all", $macInfo);
- if ( $macInfo ) {
- self::$return_array[] = $macInfo;
- } else {
- $ipconfig = $_SERVER["WINDIR"]."\system32\ipconfig.exe";
- if ( is_file($ipconfig) ) {
- @exec($ipconfig." /all", $macInfo);
- }else {
- @exec($_SERVER["WINDIR"]."\system\ipconfig.exe /all", $macInfo);
- }
- self::$return_array[] = $macInfo;
- }
- return self::$return_array;
- }
- private static function forLinux(){
- @exec("/sbin/ifconfig", $macInfo);
- if ( $macInfo ) {
- self::$return_array[] = $macInfo;
- } else {
- $file_arr = array('ifcfg-eth0', 'ifcfg-eth1', 'ifcfg-eth2', 'ifcfg-eth3', 'ifcfg-em1', 'ifcfg-em2', 'ifcfg-em3', 'ifcfg-em4');
- foreach ($file_arr as $file) {
- if (file_exists('/etc/sysconfig/network-scripts/'.$file)) {
- self::$return_array[] = file('/etc/sysconfig/network-scripts/'.$file);
- }
- }
- }
- return self::$return_array;
- }
- }
|