Intereting Posts
Отправить форму без обновления после выбора из выпадающего списка TwitterOAuth от Авраама – Не удалось аутентифицировать вас; Ошибка: 32 Сообщение о новых пользователях Joomla 2.5.14 codeigniter – класс электронной почты – регистрация после отправки Получить дату из формы ввода в PHP PHP передать функцию в качестве параметра, а затем вызвать функцию? Как я могу подсчитать общее количество всех комментариев и комментариев к каждому объекту на странице facebook? ORDER BY с двумя столбцами в MySQL Php echo не печатает новую строку даже в двойных кавычках или используя PHP_EOL определить, использует ли пользователь прокси-сервер Библиотека PHP для создания удобных относительных временных меток Ошибка PHP / CURL – Stripe TLS 1.0 Переменные расширения класса переменной в PHP – возможно ли это? открытие mp4 через php-результаты в полной загрузке до воспроизведения Как измерить скорость кода, написанного на PHP?

PHP-адрес nmap MAC-адрес

Я запускаю сценарий на сервере Windows, чтобы найти MAC-адрес устройства с nmap.

$ip= $_SERVER['REMOTE_ADDR']; $line = "C:\\nmap -sP -n $ip"; echo "You IP address "; echo $ip; echo "<br><br>"; $ping = shell_exec("$line"); $mac = substr($ping,156,17); echo "MAC ADDRESS: "; echo $mac; 

Выход MAC-адресов меняется каждый раз при запуске скрипта. Я подозреваю это, потому что команда добавляет информацию о времени и задержке, которая, в свою очередь, изменила количество символов. Есть ли более эффективный способ вытащить только адрес mac?

(исходный образец вывода nmap -sP -n $ip )

 Starting Nmap 6.46 ( http://nmap.org ) at 2014-07-29 10:00 Central Daylight Time Nmap scan report for 10.0.0.152 Host is up (0.00s latency). MAC Address: C8:F6:50:FF:FF:FF (Apple) Nmap done: 1 IP address (1 host up) scanned in 0.39 seconds 

Вы можете использовать несколько строковых функций или регулярное выражение, чтобы вытащить MAC-адрес:

Строковый метод:

 $macLookup = 'MAC Address: '; $pos = strpos($ping, $macLookup); if ($pos !== false) { $mac = substr($ping, $pos+strlen($macLookup), 17 ); echo $mac; //C8:F6:50:FF:FF:FF } 

Метод Regex:

 if (preg_match('/MAC Address: ([A-F0-9:]+)/', $ping, $matches)) { $mac = $matches[1]; //C8:F6:50:FF:FF:FF } 

Демо-версия здесь .

Используя регулярное выражение:

 $str = "Starting Nmap 6.46 ( http://nmap.org ) at 2014-07-29 10:00 Central Daylight Time Nmap scan report for 10.0.0.152 Host is up (0.00s latency). MAC Address: C8:F6:50:FF:FF:FF (Apple) Nmap done: 1 IP address (1 host up) scanned in 0.39 seconds"; preg_match('/MAC Address: ([A-F0-9\:]+)/',$str, $matches); $mac = $matches[1]; var_dump ($mac); 

выведет:

 string(17) "C8:F6:50:FF:FF:FF"