Что нового

[Сеть, интернет] обнаружение PPPoE соединения

UnEpicFail

Новичок
Сообщения
24
Репутация
0
Доброго всем времени суток.

Возникла проблема, решение которой не дает мне покоя уже несколько дней.

Необходимо с помощью скрипта вычислить IP PPPoE соединения (если оно есть) на любом компьютере под управление Windows XP, Vista, 7.
Проблема в том что различных соединений на компьютере может быть бесконечное множество и версии операционной системы Windows могут быть любыми.

Надеюсь кто нибудь поможет, заранее спасибо.
 

BOOKER

Новичок
Сообщения
33
Репутация
0
Я конечно совсем ещё не силен в этом деле но вроде бы этим занимается команда ipconfig или нет?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
BOOKER
помоги человеку, поделись наработками :whistle:
 
Автор
UnEpicFail

UnEpicFail

Новичок
Сообщения
24
Репутация
0
BOOKER сказал(а):
Я конечно совсем ещё не силен в этом деле но вроде бы этим занимается команда ipconfig или нет?
)))
тогда уж route print
как сидя за компом найти PPPoE я знаю))) а кот как это сделать на удаленной машине в полностью автоматическом режиме?
 

BOOKER

Новичок
Сообщения
33
Репутация
0
Чем смогу помогу ;) Тока я не совсем понял что нужно. Если просто вычислить соединения так это наш первый пример c тобой Kaster. Вот он:

Код:
$pid = Run("ipconfig", "", @SW_HIDE, 0x2)
$line = ""
While 1
    $line &= StdoutRead($pid)
    If @error Then ExitLoop
Wend

MsgBox(0, "STDOUT read:", $line)

OffTopic:
Вот говорю же что нужно в уроки перебазировать твое обучения меня) Скажи в какой раздел писать? Вечерком сегодня сделаю
 
Автор
UnEpicFail

UnEpicFail

Новичок
Сообщения
24
Репутация
0
хм...
ребят спасибо конечно за старание))) но как я пойму какой из IP является PPPoE соединением?

ладно, давайте я покажу что сделал сам уже (тока не смейтесь)
Это вполне рабочий поиска PPPoE соединения и удаления мультикастового маршрута где он выступает гетэвэем, но работает тока на ХР.

Код:
#include <Constants.au3> 

RunWait (@ComSpec & " /c " & 'route print > route.txt', "", @SW_HIDE)
$file = FileOpen("route.txt", 0)
$find = False
while 1
	$line = FileReadLine($file)
	If @error = -1 Then		
		ExitLoop
	EndIf
	if StringRegExp($line,"0\.0\.0\.0\s+0\.0\.0\.0\s+[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\s+[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\s+1$") == 1 Then
		$ip = StringRegExp($line,'0\.0\.0\.0\s+0\.0\.0\.0\s+([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\s+[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\s+1$',1)
		$find = True
		ExitLoop
	EndIf	
WEnd
FileClose($file)
if ($find) then 
	RunWait (@ComSpec & " /c " & 'route delete 224.0.0.0 mask 240.0.0.0 ' & $ip[0], "", @SW_HIDE)
EndIf
FileDelete("route.txt")


немного поясню, я знаю что PPPoE при создании в XP всегда устанавливает метрику на себя 1, но вот в других версиях Виндовс ведет себя по другому, поэтому я и решил сменить алгоритм и вычислять PPPoE по другому принципу.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
UnEpicFail
На все 100% не уверен, но помоему активное PPPoE соединение при ipconfig имеет имя
Код:
Имя соединения - PPP Адаптер
В приведенном выше коде, приведен неплохой пример запуска коммандой утилиты с последующим перехватом его стандартного потока. После сбора результата работы утилиты в контейнер, его содержимое можно легко подвернуть анализу, на наличие релевантных ключевых слов (хотя бы тот же PPP-адаптер). Это избавит от необходимости использования временного файла.
 
Верх