Что нового

[Сеть, интернет] Как получить адрес текущего основного шлюза для использования?

DronZ

Новичок
Сообщения
11
Репутация
0
Версия AutoIt:
3.3.0.0
Описание:
Скрипт должен получить для использования адрес текущего основного шлюза.
Примечания:
Доп. вопрос как можно обработать таблицу сетевых маршрутов не использую route?
 

amel27

Продвинутый
Сообщения
146
Репутация
55
DronZ сказал(а):
Скрипт должен получить для использования адрес текущего основного шлюза.

Код:
#include <array.au3>

$aRouteList = _RouteList()
_ArrayDisplay($aRouteList)

MsgBox(64, "Сообщение", "Default Gateway Address: "& $aRouteList[1][4])

Func _RouteList($sComp = ".")
	Local $aRoutCode[5] = [0, "Other", "Invalid", "Direct", "Indirect"]
	Local $sQuery, $cPersist
	Local $aRoute[1][9] = [[0,"Persistent","Destination","Mask","Gateway", _
		"Metric","Interface","Protocol","Route"]]
	Local $aProtCode[15]= [0,"Other","Local","Netmgmt","icmp","egp","ggp", _
		"hello","rip","is-is","es-is","CiscoIgrp","bbnSpfIgp","ospf","bgp"]
	Local $oWMI = ObjGet("winmgmts:{impersonationLevel=Impersonate}!\\"& _
		$sComp &"\root\cimv2")
	If Not(IsObj($oWMI))   Then Return SetError(1, 1, $aRoute)
	Local $cRoute = $oWMI.InstancesOf("Win32_IP4RouteTable")
	If Not(IsObj($cRoute)) Then Return SetError(1, 2, $aRoute)

	ReDim $aRoute[$cRoute.Count+1][9]

	For $oRoute In $cRoute
		$sQuery = "Associators of {"& $oRoute.Path_.RelPath & _
			"} Where AssocClass=Win32_ActiveRoute"
		$cPersist = $oWMI.ExecQuery($sQuery)
		If Not(IsObj($cPersist)) Then Return SetError(1, 3, $aRoute)

		$aRoute[0][0]+=1
		$aRoute[$aRoute[0][0]][0] = $aRoute[0][0]
		$aRoute[$aRoute[0][0]][1] = ($cPersist==1)
		$aRoute[$aRoute[0][0]][2] = $oRoute.Destination
		$aRoute[$aRoute[0][0]][3] = $oRoute.Mask
		$aRoute[$aRoute[0][0]][4] = $oRoute.NextHop
		$aRoute[$aRoute[0][0]][5] = $oRoute.Metric1
		$aRoute[$aRoute[0][0]][6] = $oRoute.InterfaceIndex
		$aRoute[$aRoute[0][0]][7] = $aProtCode[$oRoute.Protocol]
		$aRoute[$aRoute[0][0]][8] = $aRoutCode[$oRoute.Type]
	Next
	
	Return $aRoute
EndFunc ; ==> _RouteList (AutoIT v3.3.0.0)


DronZ сказал(а):
как можно обработать таблицу сетевых маршрутов не использую route?

аналогично - через WMI
 

ziggy17

Новичок
Сообщения
8
Репутация
0
а если нужно только "Default Gateway Address:" - что оставить?
----------------------------
#include <array.au3>

$aRouteList = _RouteList()
_ArrayDisplay($aRouteList)

MsgBox(64, "Сообщение", "Default Gateway Address: "& $aRouteList[1][4])

----------------------------
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
ziggy17,
{CodeWarn}
 
Верх