Что нового

Парсинг данных, возвращаемых netsh

Автор
K

k790

Новичок
Сообщения
239
Репутация
1
sngr
wmic не является внутренней или внешней командой, исполняемой программной или пакетными файлами
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Смотри wmic.exe в папке windows\system32\wbem.
Код:
$obj = ObjGet("WinMgmts:\\.\root\cimv2")
$que=$obj.ExecQuery("Select * from Win32_NetworkAdapterConfiguration")
$res=''
For $o in $que
$res&=$o.ArpAlwaysSourceRoute&@CRLF & _
$o.ArpUseEtherSNAP&@CRLF & _
$o.DeadGWDetectEnabled&@CRLF & _
$o.DefaultIPGateway&@CRLF & _
$o.DefaultTOS&@CRLF & _
$o.DefaultTTL&@CRLF & _
$o.Description&@CRLF & _
$o.DHCPEnabled&@CRLF & _
$o.DHCPLeaseExpires&@CRLF & _
$o.DHCPLeaseObtained&@CRLF & _
$o.DHCPServer&@CRLF & _
$o.DNSDomain&@CRLF & _
$o.DNSDomainSuffixSearchOrder&@CRLF & _
$o.DNSEnabledForWINSResolution&@CRLF & _
$o.DNSHostName&@CRLF & _
$o.DNSServerSearchOrder&@CRLF & _
$o.DomainDNSRegistrationEnabled&@CRLF & _
$o.ForwardBufferMemory&@CRLF & _
$o.FullDNSRegistrationEnabled&@CRLF & _
$o.GatewayCostMetric&@CRLF & _
$o.IGMPLevel&@CRLF & _
$o.Index&@CRLF & _
$o.IPAddress&@CRLF & _
$o.IPConnectionMetric&@CRLF & _
$o.IPEnabled&@CRLF & _
$o.IPFilterSecurityEnabled&@CRLF & _
$o.IPPortSecurityEnabled&@CRLF & _
$o.IPSecPermitIPProtocols&@CRLF & _
$o.IPSecPermitTCPPorts&@CRLF & _
$o.IPSecPermitUDPPorts&@CRLF & _
$o.IPSubnet&@CRLF & _
$o.IPUseZeroBroadcast&@CRLF & _
$o.IPXAddress&@CRLF & _
$o.IPXEnabled&@CRLF & _
$o.IPXFrameType&@CRLF & _
$o.IPXMediaType&@CRLF & _
$o.IPXNetworkNumber&@CRLF & _
$o.IPXVirtualNetNumber&@CRLF & _
$o.KeepAliveInterval&@CRLF & _
$o.KeepAliveTime&@CRLF & _
$o.MACAddress&@CRLF & _
$o.MTU&@CRLF & _
$o.NumForwardPackets&@CRLF & _
$o.PMTUBHDetectEnabled&@CRLF & _
$o.PMTUDiscoveryEnabled&@CRLF & _
$o.ServiceName&@CRLF & _
$o.SettingID&@CRLF & _
$o.TcpipNetbiosOptions&@CRLF & _
$o.TcpMaxConnectRetransmissions&@CRLF & _
$o.TcpMaxDataRetransmissions&@CRLF & _
$o.TcpNumConnections&@CRLF & _
$o.TcpUseRFC1122UrgentPointer&@CRLF & _
$o.TcpWindowSize&@CRLF & _
$o.WINSEnableLMHostsLookup&@CRLF & _
$o.WINSHostLookupFile&@CRLF & _
$o.WINSPrimaryServer&@CRLF & _
$o.WINSScopeID&@CRLF & _
$o.WINSSecondaryServer&@CRLF&@CRLF
Next
FileWrite(@ScriptDir&'\123',$res)

Этот файл приложи.
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
sngr [?]
Смотри wmic.exe в папке windows\system32\wbem
Нету


Этот файл приложи.
Microsoft видео или ТВ подключение
True













1


False








False











NdisIP
{6B4975A5-2ADE-42A5-BF27-CE55D5836C47}


















RAS асинхронный адаптер
False













2


False








False











AsyncMac
{0D7297A5-FB5E-408A-8430-D05239B232E8}


















Минипорт WAN (L2TP)
False













3


False








False











Rasl2tp
{D9BC70E6-F248-4E91-B800-E37ABFF922A1}


















Минипорт WAN (PPTP)
False













4


False








False






50:50:54:50:30:30




PptpMiniport
{4F53E40C-AA0C-418F-800C-EAEE18846AFE}


















Минипорт WAN (PPPoE)
False













5


False








False






33:50:6F:45:30:30




RasPppoe
{06FCB4FB-FFC9-47EC-BBAF-55D92BBE4170}


















Прямой параллельный порт
False













6


False








False











Raspti
{766A46CE-E764-4540-A36E-F50375B398A1}


















Минипорт WAN (IP)
False













7


False








False











NdisWan
{8FBCBDB9-DB12-47AD-90E2-B835A3B12F2E}


















Минипорт планировщика пакетов
False













8


False








False






DA:13:20:52:41:53





{23D61B6F-BA65-4333-A7EB-35021D9DB1B9}


















Bluetooth Device (Personal Area Network)
True













10


False








False











BthPan
{202767E5-8445-434C-B0DC-08F9E8795964}


















Atheros AR9285 Wireless Network Adapter - Минипорт планировщика пакетов
False





False
Linus

False

True


11

1
True
False







False






00:25:D3:C9:3E:51




AR5416
{228EFB03-22C1-4856-A428-F576614A8143}
0




64404
True











Минипорт планировщика пакетов
False













12


False








False






00:25:D3:C9:3E:51





{88C6E9E2-80E9-4B10-9DDE-34A42828BE82}


















Atheros AR8132 PCI-E Fast Ethernet Controller - Минипорт планировщика пакетов
False





False
Linus

False

True


13

20
True
False







False






90:E6:BA:9A:EA:EF




L1c
{2B088A8A-2F05-4D75-98F4-278E66976421}
0




64404
True











Минипорт планировщика пакетов
False













14


False








False






90:E6:BA:9A:EA:EF





{A76A09FF-19AD-4737-8455-85475E78B640}


















Bluetooth Device (Personal Area Network)
True













16


False








False











BthPan
{D3E66ABC-B96F-4CF6-934C-97A6EA76050D}


















Sony Ericsson Device 0016 USB Ethernet Emulation (NDIS 5)
True













17


False








False











s0016nd5
{2A3262C3-E8EB-4E71-B344-BEB82C74D738}


















HUAWEI Mobile Connect - Network Adapter
True













18


False








False











huawei_cdcecm
{61A34EE3-616D-4235-8FB3-3B1407B58B8F}


















VirtualBox Bridged Networking Driver Miniport
False













19


False








False












{1F0F6A5D-6CDD-441B-9117-69B30EE69182}


















VirtualBox Bridged Networking Driver Miniport
False













20


False








False






90:E6:BA:9A:EA:EF





{B32DDC12-73C7-4DB5-B08D-831A3324F85E}


















Минипорт планировщика пакетов
False













21


False








False












{6439AACF-1B82-4000-A161-607479349D56}


















VirtualBox Bridged Networking Driver Miniport
False













22


False








False






00:25:D3:C9:3E:51





{4F9EBC22-2387-4BC6-8379-A4DFCB7E5BC8}


















Минипорт планировщика пакетов
False













23


False








False












{E5D6E533-4AB4-4110-97F2-436AB063B529}


















VirtualBox Bridged Networking Driver Miniport
False













24


False








False












{EB126500-509B-45B3-BB85-198593D196BE}


















VirtualBox Host-Only Ethernet Adapter - Минипорт планировщика пакетов
False





False
Linus

False

True


25

20
True
False







False






08:00:27:00:24:0B




VBoxNetAdp
{8B3AD7F9-2F30-447F-9F9E-139ED5A585E8}
1




64404
True











Минипорт планировщика пакетов
False













26


False








False






08:00:27:00:24:0B





{5AD0DAA1-C2D6-45F3-A254-567EDC2C7A45}
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Код:
$obj = ObjGet("WinMgmts:\\.\root\cimv2")
$oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
fu1(11)
fu1(13)
fu1(25)
Func fu1($num)
$que=$obj.get("Win32_NetworkAdapterConfiguration.index="&$num&"")
Local $ip,$gat,$mask,$dns
For $o In $que.ipaddress
    $ip&=$o&@CRLF
Next
For $o In $que.DefaultIPGateway
    $gat&=$o&@CRLF
Next
For $o In $que.IPSubnet
    $mask&=$o&@CRLF
Next
For $o In $que.DNSServerSearchOrder
    $dns&=$o&@CRLF
Next
;~ MsgBox(0,'','ip='&$ip&@CRLF&'mask='&$mask&@CRLF&'gathway='&$gat&@CRLF&'dns='&$dns)
FileWrite(@ScriptDir&'\1653','ip='&$ip&@CRLF&'mask='&$mask&@CRLF&'gathway='&$gat&@CRLF&'dns='&$dns&@CRLF)
EndFunc
$oMyError=0
Func MyErrFunc()
EndFunc   ;==>MyErrFunc

Это покажи, что за os у тебя.
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
ip=0.0.0.0

mask=

gathway=
dns=192.168.1.1
8.8.8.8

ip=192.168.1.251

mask=255.255.255.0

gathway=192.168.1.1

dns=192.168.1.1

ip=192.168.56.1

mask=255.255.255.0

gathway=
dns=

sngr [?]
Разрешение экрана: 1024x600:32
Частота обновления экрана: 60
Код языка системы: 0419
WIN32_NT
WIN_XP
Microsoft Windows XP Home Edition
Номер системы: 2600
Админ. права: Yes
SP: Service Pack 3
Кодовая таблица:00000409
Архитектура процессора: X86
Microsoft Windows XP
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Еще вариант, правда без парсинга и без отображения
имени сетевого подключения.
Код:
$n = 1
While 1
	Sleep(100)
    $var1 = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards", $n)
    If @error <> 0 Then ExitLoop	
	$var2 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\"&$var1, "ServiceName")
	$Description = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\"&$var1, "Description")
	$IP = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"&$var2, "IPAddress")
	$Gateway = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"&$var2, "DefaultGateway")
	$DNS= RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"&$var2, "NameServer")
	$Mask= RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"&$var2, "SubnetMask")
	$n = $n + 1
	MsgBox(0, $Description, "IP: " & $IP & " | Gateway: " &  $Gateway & " | DNS: " & $DNS & " | Mask: " & $Mask)
WEnd
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
k790
Код:
$obj = ObjGet("WinMgmts:\\.\root\cimv2")
$oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
$q=$obj.ExecQuery('Select * from Win32_NetworkAdapterConfiguration where ipenabled="true"')
Local $ip,$gat,$mask,$dns,$ind
For $que In $q
For $o In $que.ipaddress
    $ip&=$o&@CRLF
Next
For $o In $que.DefaultIPGateway
    $gat&=$o&@CRLF
Next
For $o In $que.IPSubnet
    $mask&=$o&@CRLF
Next
For $o In $que.DNSServerSearchOrder
    $dns&=$o&@CRLF
Next
    $ind&=$que.index&@CRLF
Next
ClipPut('ip='&$ip&@CRLF&'mask='&$mask&@CRLF&'gathway='&$gat&@CRLF&'dns='&$dns&@CRLF&$ind)
$oMyError=0
Func MyErrFunc()
EndFunc   ;==>MyErrFunc

Результат пишеться в буфер обмена.
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
Yuriy [?]
Еще вариант, правда без парсинга и без отображенияимени сетевого подключения.
Не подходит


sngr [?]
Результат пишеться в буфер обмена.
Код:
ip=0.0.0.0
192.168.1.251
192.168.56.1

mask=
255.255.255.0
255.255.255.0

gathway=192.168.1.1

dns=192.168.1.1
8.8.8.8
192.168.1.1

11
13
25
Нужно знать и имена и адреса
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Код:
#include 'encoding.au3';есть где-то у нас на форуме.
$s_Read = ''
$i_PID = Run('netsh interface ip show config', '', @SW_HIDE, 6)
While 1
    $s_Read &= StdoutRead($i_PID)
    If @error Then ExitLoop
    Sleep(1)
WEnd
$str=StringRegExp(_Encoding_866To1251($s_Read),'(?smi)Настройка интерфейса(.*?)\r\n\r\n',3)
$res=''
For $i=0 To UBound($str)-1
	$str1=StringRegExp($str[$i],'(?smi)^(.*?)\r\n',3)
	For $u=0 To UBound($str1)-1
		If StringInStr($str1[$u],'"') Then
		$res&=StringRegExpReplace($str1[$u],'^.*:\s+(\S+)','\1')&@CRLF
		$u=$u+1
	EndIf
	If StringInStr($str1[$u],'IP') Then
		$res&=StringRegExpReplace($str1[$u],'.*?:\s+(\S+).*','\1')&@CRLF
		$u=$u+1
	EndIf
	If StringInStr($str1[$u],'Маска') Then
		$res&=StringRegExpReplace($str1[$u],'.*?:\s+(\S+).*','\1')&@CRLF
		$u=$u+1
	EndIf
	If StringInStr($str1[$u],'шлюз') Then
		$res&=StringRegExpReplace($str1[$u],'.*?:\s+(\S+).*','\1')&@CRLF
		$u=$u+1
	EndIf
	If StringInStr($str1[$u],'DNS') Then
		$res&=StringRegExpReplace($str1[$u],'.*?:\s+(\S+).*','\1')&@CRLF
		$u=$u+1
	EndIf
Next
Next
MsgBox(0,'',$res)
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
k790
А этот?
Код:
$n = 1
While 1
	Sleep(100)
    $var1 = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards", $n)
    If @error <> 0 Then ExitLoop	
	$var2 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\"&$var1, "ServiceName")
	$Description = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\"&$var1, "Description")
	$NetName = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\"&$var2&"\Connection", "Name")
	
	$IP = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"&$var2, "IPAddress")
	$Gateway = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"&$var2, "DefaultGateway")
	$DNS= RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"&$var2, "NameServer")
	$Mask= RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\"&$var2, "SubnetMask")
	$n = $n + 1	
	ConsoleWrite("Сетевое устройство: " & $Description & @CR)
	ConsoleWrite("Имя сетевого подключения: " & $NetName & @CR)
	ConsoleWrite("IP: " & $IP & @CR)	
	ConsoleWrite("Маска: " & $Mask & @CR)
	ConsoleWrite("Шлюз: " & $Gateway & @CR)
	ConsoleWrite("DNS: " & $DNS & @CR)
WEnd
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
Yuriy [?]
--> Press Ctrl+Alt+F5 to Restart or Ctrl+Break to Stop
Сетевое устройство: Atheros AR9285 Wireless Network Adapter
Имя сетевого подключения: Беспроводное сетевое соединение
IP: 192.168.1.250
Маска: 255.255.255.0
Шлюз: 192.168.1.1
DNS: 192.168.1.1,8.8.8.8
Сетевое устройство: Atheros AR8132 PCI-E Fast Ethernet Controller
Имя сетевого подключения: Подключение по локальной сети
IP: 192.168.1.251
Маска: 255.255.255.0
Шлюз: 192.168.1.1
DNS: 192.168.1.1,8.8.8.8
Сетевое устройство: Sony Ericsson Device 0016 USB Ethernet Emulation (NDIS 5)
Имя сетевого подключения: Подключение по локальной сети 2
IP: 0.0.0.0
Маска: 0.0.0.0
Шлюз:
DNS:
Сетевое устройство: HUAWEI Mobile Connect - Network Adapter
Имя сетевого подключения: Подключение по локальной сети 4
IP: 0.0.0.0
Маска: 0.0.0.0
Шлюз:
DNS:
Сетевое устройство: VirtualBox Host-Only Ethernet Adapter
Имя сетевого подключения: VirtualBox Host-Only Network
IP: 192.168.56.1
Маска: 255.255.255.0
Шлюз:
DNS:
+>22:34:28 AutoIT3.exe ended.rc:0
Нет, этот вариант не подходит, всякий хлам лезет.


Добавлено:
Сообщение автоматически объединено:

sngr
интересно, буду разбираться
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
sngr
А как твой пример использовать для вытягивания неизвестных значений, имея известные?

То есть, в combobox имеем названия сетевых подключений (берётся из твоего примера), теперь нужно узать IP..., зная имя подключения, но как узнать?
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
sngr [?]
нет, нету имени сетевого подключения и ip на одно из 3-х подключений.

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

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Код:
$name='';название интерфейса
$i_PID = Run('netsh interface ip show config '&$name)
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
sngr
Это совместить с предыдущим вариантом и будет то что я хотел?
Спасибо


Добавлено:
Сообщение автоматически объединено:

sngr
Ещё вопрос, а как получить альтернативный dns?
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Код:
If StringInStr($str1[$u],'DNS') Then
        $res&=StringRegExpReplace($str1[$u],'.*?:\s+(\d+.\d+.\d+.\d+).*','\1')&@CRLF
		If Not StringInStr($str1[$u+1],'WINS') Then $res&=StringRegExpReplace($str1[$u+1],'\s+(\d+.\d+.\d+.\d+).*','\1')&@CRLF
        $u=$u+1
    EndIf
 
Автор
K

k790

Новичок
Сообщения
239
Репутация
1
Сделал пока так:
Код:
Func _getinfonet($getinfo)
	$s_Read = ''
	$i_PID = Run('netsh interface ip show config' & ' "' & $getinfo & '"', '', @SW_HIDE, 6)
	While 1
		$s_Read &= StdoutRead($i_PID)
		If @error Then ExitLoop
		Sleep(1)
	WEnd

	_GUICtrlIpAddress_ClearAddress($IPAddress1)
	_GUICtrlIpAddress_ClearAddress($IPAddress2)
	_GUICtrlIpAddress_ClearAddress($IPAddress3)
	_GUICtrlIpAddress_ClearAddress($IPAddress4)
	_GUICtrlIpAddress_ClearAddress($IPAddress5)

	$str = StringRegExp(_Encoding_866To1251($s_Read), '(?smi)Настройка интерфейса(.*?)\r\n\r\n', 3)
	$res = ''
	For $i = 0 To UBound($str) - 1
		$str1 = StringRegExp($str[$i], '(?smi)^(.*?)\r\n', 3)
		For $u = 0 To UBound($str1) - 1
			If StringInStr($str1[$u], '"') Then
				$res = StringRegExpReplace($str1[$u], '^.*:\s+(\S+)', '\1')
				$u = $u + 1

			EndIf
			If StringInStr($str1[$u], 'IP') Then
				$res = StringRegExpReplace($str1[$u], '.*?:\s+(\S+).*', '\1') & @CRLF
				$u = $u + 1
				_GUICtrlIpAddress_Set($IPAddress1, $res)
			EndIf
			If StringInStr($str1[$u], 'Маска') Then
				$res = StringRegExpReplace($str1[$u], '.*?:\s+(\S+).*', '\1') & @CRLF
				$u = $u + 1
				_GUICtrlIpAddress_Set($IPAddress2, $res)
			EndIf
			If StringInStr($str1[$u], 'шлюз') Then
				$res = StringRegExpReplace($str1[$u], '.*?:\s+(\S+).*', '\1') & @CRLF
				$u = $u + 1
				_GUICtrlIpAddress_Set($IPAddress3, $res)
			EndIf
			If StringInStr($str1[$u], 'DNS') Then
				$res = StringRegExpReplace($str1[$u], '.*?:\s+(\S+).*', '\1') & @CRLF
				_GUICtrlIpAddress_Set($IPAddress4, $res)

				$res = StringRegExpReplace($str1[$u], '.*?:\s+(\d+.\d+.\d+.\d+).*', '\1') & @CRLF
				If Not StringInStr($str1[$u + 1], 'WINS') Then $res = StringRegExpReplace($str1[$u + 1], '\s+(\d+.\d+.\d+.\d+).*', '\1') & @CRLF
				$u = $u + 1
				_GUICtrlIpAddress_Set($IPAddress5, $res)

			EndIf
		Next
	Next
EndFunc   ;==>_getinfonet



Добавлено:
Сообщение автоматически объединено:

sngr
Нашёл 1 проблему, в win 7 & win 8 не показывает первые три цифры в IP.
То есть если IP=192.168.1.213, то программа показывает 0.168.1.213
 
Верх