Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Функция passthru()
Форумы портала PHP.SU » PHP » Программирование на PHP » Функция passthru()

Страниц (1): [1]
 

1. SofiaKit - 23 Апреля, 2011 - 14:14:01 - перейти к сообщению
Использовала такую функцию:

Для вывода в локальной сети интерфейс подключения. Но она немного неудобна в читабельности. Выводит:
Interface: 136.12.11.201 --- 0xc Internet Address Physical Address Type 136.12.11.9 00-1d-60-25-fd-2f dynamic

Хотелось бы по отдельности отсортировать и сделать читабельным, вот так вот:
IP: 136.12.11.9
Шлюз: 136.12.11.201
MAC: 00-1d-60-25-fd-2f

Помогите пожалуйста решить эту задачку.
2. EuGen - 23 Апреля, 2011 - 14:19:09 - перейти к сообщению
Выбирайте, скажем, при помощи регулярных выражений.

Задача не в этом:
http://forum.php.su/topic.php?fo...=35&topic=60
?
3. SofiaKit - 23 Апреля, 2011 - 15:38:51 - перейти к сообщению
по ссылке тему читала, не разобралась, гугл тоже не помог. вот очень надеюсь что тут подскажут. Может все-же возможно как-то?
4. koval - 23 Апреля, 2011 - 15:49:53 - перейти к сообщению
Регуляркой возможно.
5. SofiaKit - 23 Апреля, 2011 - 16:07:58 - перейти к сообщению
как?
6. EuGen - 23 Апреля, 2011 - 16:52:21 - перейти к сообщению
София, Вам нужно почитать наш урок о регулярных выражениях. Навскидку:
PHP:
скопировать код в буфер обмена
  1.  
  2. $string=passthru('arp -a '.$ip);
  3. $rgMatches=array();
  4. preg_match('/Interface\:\s+([\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3})\s+(.*?)Internet\s+Address\s+Physical\s+Address\s+Type\s+([\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3})\s+ ([0-9a-f]{2}\-[0-9a-f]{2}\-[0-9a-f]{2}\-[0-9a-f]{2}\-[0-9a-f]{2}\-[0-9a-f]{2})\s+(.*?)/i', $string, $rgMatches);
  5. echo("
  6. IP: ".$rgMatches[1]."
  7. Шлюз: ".$rgMatches[3]."
  8. MAC: ".$rgMatches[4]."
  9. ");
  10.  

Однако если в некоторых случаях вывод будет отличаться - может не сработать. Вам нужно будет учесть все возможные варианты вывода от команды arp
7. SofiaKit - 23 Апреля, 2011 - 17:29:16 - перейти к сообщению
жаль, ваш скрипт работает так-же как и у меня, нечитабельно. Недовольство, огорчение
8. EuGen - 23 Апреля, 2011 - 17:35:45 - перейти к сообщению
Да, ведь passthru не возвращает результат, эту деталь я не учел, когда скопировал код из первого сообщения темы. Нужен exec:
PHP:
скопировать код в буфер обмена
  1.  
  2. $rgData=array();
  3. exec("arp -a ".$ip, $rgData);
  4. $string=join(' ', $rgData);
  5. //далее разбор
  6.  

 

Powered by ExBB FM 1.0 RC1