Что нового

Как по мак-адресу узнать текущее ip интерфейса?

agikon

Знающий
Сообщения
789
Репутация
17
Хочу реализовать чтобы скрипт определял какое текущее ip у определённого интерфейса зная его мак адрес.
Подскажитепожалуйста как это проще всего реализовать?

вот чтото на подобии

Код:
func _Get_IP()

endfunc

MsgBox(0,"Текущее ip",$ip)
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Может так подойдёт?
Код:
Func _Get_IP($Mac)
	$s_Read = ''
	$i_PID = Run('ipconfig /all','',@SW_HIDE,6)
	While 1
		$s_Read &= StdoutRead($i_PID)
		If @error Then ExitLoop
		Sleep(1)
	WEnd
	$str=StringRegExp($s_Read,'Физический адрес.*:\s([0-F-]+)(?s).*?IP-(?-s).*:\s([0-9.]+)',3)
	If IsArray($str) Then
		For $i=0 To UBound($str)-1 Step 2
			If StringCompare(StringReplace($str[$i], '-', ''), StringReplace($Mac, '-', ''), 2) = 0 Then Return $str[$i+1]
		Next
	EndIf
	Return 0 ; Вернуть "0", если IP не найден
EndFunc

$Mac = '00-80-48-27-EC-9B' ; Здесь МАС для поиска IP
MsgBox(0,"Текущее ip", _Get_IP($Mac))
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
edyapd
проверьте у себя этот код, ибо у меня он показывает ip соседнего интерфейса, а не то ip которое принадлежит истинному маку.
 

Astel064

Помог мой пост, ставь +!
Сообщения
276
Репутация
51
Может это поможет?
 

Вложения

  • MAC.au3
    5.5 КБ · Просмотры: 10

edyapd

Осваивающий
Сообщения
380
Репутация
30
agikon, у меня только одна сетевая карточка. По этому проверять особо не на чем. Попробуйте добавить две строки
Код:
#include <Array.au3> ; Эту в самом начале
;--------------------------
$str=StringRegExp($s_Read,'Физический адрес.*:\s([0-F-]+)(?s).*?IP-(?-s).*:\s([0-9.]+)',3) ; После этой
_ArrayDisplay($str)                       ; эту

В массив должны быть по очереди выведены MAC и IP адреса
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
joiner У меня ваш вариант работает только с такой строкой.
Код:
$getip = _StringBetween($strb[$i + 3], ':', @CR)

XP SP2. Нет открывающейся скобки в строке с IP адресом
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
agikon сказал(а):
всё равно показывает ip соседнего интерфейса.
Как говорится чудес не бывает. Что будет если в командной строке запустить "ipconfig /all"? Будет там соответствие?
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
edyapd [?]
Как говорится чудес не бывает. Что будет если в командной строке запустить "ipconfig /all"? Будет там соответствие?
будет всё соответствовать.
а вот через скрипт не соответствует.
на другой машине с winxp так же само всё.
я сам не пойму в чём дело.

если скрипт через командную строку то ip не соответствует маку (а соответствует ip другого мака, то есть сдвиг получается)
а если скрипт через IPHelper UDF то вообще ничего не выводит, выводит "пусто".
может эти методы в winxp не работают?


p/s1
а ну так ну написано же для виста плюс, поэтому на xp эта библиотека и не работает.
IPHelper UDF Library v0.1 for Windows Vista+

https://www.autoitscript.com/forum/topic/115148-nethelper-wi-fi-edition/

p/s2
остаётся только через ipconfig если исправите сдвиг.

p/s3
стоп.
только что на второй машине проверил скрипт который определяет ip по методу ipconfig (раньше на второй машине проверял скрипт который определяет по методу IPHelper UDF) и вот на второй машине нормально работает.
а вот на первой машине почемуто сдвиг получается.
поэтому скрипт видать рабочий, это у моей виндовс крыша видать едет.
не знаете почему так может быть что в ipconfig в CMD всё правильно показывает, а через скрипт сдвиг, а то как то не хочется виндовс переустанавливать.
это просто уже запредельные глюки....
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
А с помощью утилиты "arp" не подходит?
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
отписываюсь.
вы сейчас конечно же подумаете что я полный нуб и с самого начала не туда смотрел.
но уверяю это не так, вот уже второй день ip выдавало соседнего интерфейса, то есть показывало ip другого интерфейса, а когда в скрипт прописывал мак этого другого интерфейса то ip выдавало то которое числится за другим маком, то есть если беру макА то выдавало ipБ, а если брал макБ то выдавало ipА. то есть сдвиг.

так вот так выдавало целых два дня пока до этого момента.
теперь всё наладилось.
а дело было как я и говорил в глюке интерфейса.
а именно вот в интерфейсе юсб вай-фай адаптера.
почему я так уверен, да потому что все эти два дня в этом интерфейсе не мог сохранить тот мак который вручную прописываю в настройках этого юсб вай-фай пдаптера, то есть пишу свой мак, сохраняю, но он (вай-фай адаптер) с этим вручную прописаным маком потом не подключается к роутеру (по вай-фай естественно ибо это же вай фай адаптер, и вай фай роутер). то есть он постоянно пытается подключится но не подключается.
а если убрать тот мак который я прописал и снова оставить на заводском то сразу подключается к роутеру.

а вот только что ещё раз попробовал изменитьт мак в этом вай-фай адаптере и о чудо подключился к роутеру, то есть глюк прошел. надолго ли прошел не знаю.
и я сразу же решил попробовать узнать ip по этому новому маку, запустил скрипт с кодом который определяет ip через ipconfig и о чудо ip нормально определилось.
так что проблема была в глюке самом интерфейсе.
вот такое ещё бывает.
так что бывают такие глюки что даже в голову не лезет, а можно грешить на что угодно.
правда я же в предыдущем посту написал что на второй машине нормально работал скрипт, и я сразу написал что это такой может быть глюк.


вот даже привожу скрин что всё заработало http://6.firepic.org/6/images/2015-06/27/iko872sqz9ya.jpg
вот если заработало так заработало, нечего и сказать, а до этого выдавало ip соседнего интерфейса.
хотя повторяю, я выше сразу написал что на другой машине скрипт нормально работал, и после этого я стал подозревать что проблема именно в интерфейсе.
(а если ещё появится этот глюк то сделаю скрин или даже видео сниму чтобы не думали что я бузу несу).

какой с этого можно сделать вывод- да такой что вот такой аппаратный глюк может быть, что ip выдаёт другого соседнего мака, и попробуй пойми в чём дело. это хорошо что я дотошно всё проделал, а так попробуй пойми.
может такие глюки с USB wi-fi адаптерами не редкие, так что будьте бдительны.
всем спасибо за помощь.
 
Верх