<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; JS: Определение ip-адреса адаптера.]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9742&amp;type=atom" />
	<updated>2014-09-22T18:12:54Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=9742</id>
		<entry>
			<title type="html"><![CDATA[Re: JS: Определение ip-адреса адаптера.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=86663#p86663" />
			<content type="html"><![CDATA[<p><strong>im2002</strong>, в виду того, что PowerShell уже предустановлен в Win7, в нем Ваша задача решается еще проще:<br /></p><div class="codebox"><pre><code>gp &#039;HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\*&#039; | % {
  $ht = @{}
}{
  $ht[$_.Description] = $_.ServiceName
}{
  $ht.GetEnumerator() | % {
    &quot;{0} - {1}&quot; -f $_.Name, (
      gp &quot;HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\$(
        $_.Value
      )&quot;
    ).DhcpIPAddress
  }
}</code></pre></div><p>Опять-таки решение завязано на парсинге данных реестра при этом скорость выборки данных в разы выше, чем если бы то же писалось на командном языке или WSH.</p>]]></content>
			<author>
				<name><![CDATA[greg zakharov]]></name>
			</author>
			<updated>2014-09-22T18:12:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=86663#p86663</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Определение ip-адреса адаптера.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=86629#p86629" />
			<content type="html"><![CDATA[<p>Кстати!<br /></p><div class="codebox"><pre><code>HKLM\SOFTWARE\Microsoft\Windows NT\CurrentControl\NetworkCards</code></pre></div><p>также может сослужить добром в поисках адаптеров и IP. Например:<br /></p><div class="codebox"><pre><code>@echo off
  setlocal
    set &quot;top=HKLM&quot;
    set &quot;sub=%top%\SYSTEM\CurrentControlSet&quot;
    set net=&quot;%top%\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards&quot;
    set &quot;itm=%sub%\Services\Tcpip\Parameters\Interfaces\%%i&quot;
    for /f &quot;tokens=3&quot; %%i in (
      &#039;reg query %net% /s ^| findstr /ic:&quot;ServiceName&quot;&#039;
    ) do (
      for /f &quot;skip=3 tokens=3&quot; %%j in (
        &#039;2^&gt;nul reg query %itm% /v DhcpIPAddress&#039;
      ) do (
        if &quot;%%j&quot; neq &quot;0.0.0.0&quot; (
          set &quot;ip=%%j&quot;
          set &quot;id=%%i&quot;
        )
      )
    )
    set &quot;net=%sub%\Control\Network&quot;
    set &quot;mid=%net%\%%i\%id%\Connection&quot;
    for /f &quot;tokens=6 delims=\&quot; %%i in (
      &#039;reg query %net% /s ^| 2^&gt;nul findstr /ec:&quot;%id%&quot;&#039;
    ) do (
      for /f &quot;skip=3 tokens=3&quot; %%j in (
        &#039;reg query %mid% /v PnpInstanceID&#039;
      ) do (
        for /f &quot;skip=3 tokens=2,*&quot; %%k in (
          &#039;reg query &quot;%sub%\Enum\%%j&quot; /v DeviceDesc&#039;
        ) do echo %%l - %ip%
      )
    )
  endlocal
exit /b</code></pre></div><p>Словом, насколько фантазия позволяет, настолько глубоко можно расковырять реестр.</p>]]></content>
			<author>
				<name><![CDATA[greg zakharov]]></name>
			</author>
			<updated>2014-09-21T11:00:05Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=86629#p86629</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Определение ip-адреса адаптера.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=86626#p86626" />
			<content type="html"><![CDATA[<p><strong>im2002</strong>, давайте немного уточним: на каком именно разделе реестра спотыкается сценарий? Не уверен, что в плане хранения даных о сетевых интерфейсах 32-х и 64-х битные системы записи в реестре шибко разнятся, но на всякий случай проверьте предварительно вручную такие разделы реестра, как:<br /></p><div class="codebox"><pre><code>HKLM\SYSTEM\CurrentControlSet\Control\Network</code></pre></div><p>в поддириктории которых (Connection) содержится значение MediaSubType. В сценарии выше он указан равным двум, так как это - идентификатор wlan. Далее, загляните в раздел:<br /></p><div class="codebox"><pre><code>HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{...}</code></pre></div><p>где {...} - id карты (полученного из Network).</p>]]></content>
			<author>
				<name><![CDATA[greg zakharov]]></name>
			</author>
			<updated>2014-09-21T07:12:05Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=86626#p86626</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Определение ip-адреса адаптера.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=86618#p86618" />
			<content type="html"><![CDATA[<p>проверил от <strong>vgreg zakharo</strong>, не вдаваясь в подробности, на Win7x64. Выдаёт ошибку: Не удаётся найти раздел или указанный параметр в реестре.</p>]]></content>
			<author>
				<name><![CDATA[im2002]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28063</uri>
			</author>
			<updated>2014-09-20T17:03:38Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=86618#p86618</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Определение ip-адреса адаптера.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=86615#p86615" />
			<content type="html"><![CDATA[<p>Похоже, что никому более сказать нечего, так что позволю со своей стороны себе такую вольность в данной теме, как пример поиска IP для wlan на примерекомандного языка.<br /></p><div class="codebox"><pre><code>@echo off
  setlocal
    set &quot;top=HKLM\SYSTEM\CurrentControlSet&quot;
    set &quot;net=%top%\Control\Network&quot;
    set &quot;mid=%net%\%%i&quot;
    set &quot;sub=%mid%\%%j\Connection&quot;
    for /f &quot;tokens=6 delims=\&quot; %%i in (
      &#039;reg query %net% ^| 2^&gt;nul findstr /c:&quot;{&quot;&#039;
    ) do (
      for /f &quot;tokens=7 delims=\&quot; %%j in (
        &#039;reg query %mid% ^| findstr /ec:&quot;}&quot;&#039;
      ) do (
        for /f &quot;tokens=3&quot; %%k in (
          &#039;2^&gt;nul reg query %sub% /v MediaSubType&#039;
        ) do (
          if &quot;%%k&quot; equ &quot;0x2&quot; set &quot;itm=%%j&quot;
        )
      )
    )
    set &quot;itm=%top%\Services\Tcpip\Parameters\Interfaces\%itm%&quot;
    for /f &quot;skip=3 tokens=3&quot; %%i in (
      &#039;reg query %itm% /v DhcpIPAddress&#039;
    ) do echo.%%i
  endlocal
exit /b</code></pre></div><p>Суть. wlan определяется по MediaSubType, который равен 2.</p>]]></content>
			<author>
				<name><![CDATA[greg zakharov]]></name>
			</author>
			<updated>2014-09-20T12:44:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=86615#p86615</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Определение ip-адреса адаптера.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=86603#p86603" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>im2002 пишет:</cite><blockquote><p>Необходимо получить только адрес IPv4 этого реального, физического адаптера.</p></blockquote></div><p>А что показывают</p><div class="codebox"><pre><code>arp -a</code></pre></div><p>и</p><div class="codebox"><pre><code>route print</code></pre></div><p>?<br />Также лично я бы не стал особо полагаться на WMI, а обратился бы напрямую к реестру:</p><div class="codebox"><pre><code>reg query HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces /s</code></pre></div><p>Там можно много чего интересного найти.</p>]]></content>
			<author>
				<name><![CDATA[greg zakharov]]></name>
			</author>
			<updated>2014-09-18T13:36:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=86603#p86603</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Определение ip-адреса адаптера.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=86582#p86582" />
			<content type="html"><![CDATA[<p>Еще есть тонкие клиенты, на них надо добавить проверку на режим запуска, они вроде как в консоле чтоль выполняются</p>]]></content>
			<author>
				<name><![CDATA[hupachupa]]></name>
			</author>
			<updated>2014-09-18T04:52:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=86582#p86582</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Определение ip-адреса адаптера.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=84335#p84335" />
			<content type="html"><![CDATA[<div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p>Пользуйтесь тэгом и кнопкой «Spoiler»:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p><span class="postimg"><img src="http://i.imgur.com/xNmXINh.png" alt="http://i.imgur.com/xNmXINh.png" /></span></p></div></div><p>У меня так: «JS: Опр…».</p></div></div>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2014-06-28T23:50:36Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=84335#p84335</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Определение ip-адреса адаптера.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=84334#p84334" />
			<content type="html"><![CDATA[<p><strong>alexii</strong>, спасибо, получилось. Грабли под названием typeof() Microsoft заложила очень грамотно: который раз наступаю.</p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p>На ярлычке вкладки название темы у меня выглядит так: JS: Определение ip-адреса ада</p></div></div>]]></content>
			<author>
				<name><![CDATA[Serge Yolkin]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27503</uri>
			</author>
			<updated>2014-06-28T23:08:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=84334#p84334</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Определение ip-адреса адаптера.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=84328#p84328" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Можно ли создать объект WMI один раз, а в цикле вызывать его для разных айпишников?</p></blockquote></div><p>Разумеется. Если речь про свойство «.address».</p><div class="quotebox"><blockquote><p>Закомментированные строки - это мои попытки (неудачные) реализовать задуманное.</p></blockquote></div><p>Первая строка должна возвращать именно объект. Если указаны все ключи:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p><span class="postimg"><img src="http://i.imgur.com/ba3MBNN.png" alt="http://i.imgur.com/ba3MBNN.png" /></span></p></div></div><p>Посему — отметаем.</p><p>Метод же «.ExecQuery()» всегда возвращает <em>коллекцию</em> (а не единственный объект), которую нужно нумеровать (в JScript) и перебирать. Пользуйте его указанным образом.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2014-06-28T01:35:05Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=84328#p84328</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Определение ip-адреса адаптера.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=84327#p84327" />
			<content type="html"><![CDATA[<p>Заинтересовался скриптом, правда для другой цели, но возник один вопрос. Вот сокращённый (для удобства экспериментов) вариант оригинального скрипта <strong>im2002</strong>:</p><div class="codebox"><pre><code>var
 a=[
  {ip:&#039;192.168.1.1&#039;,name:&#039;Zyxel&#039;},
  {ip:&#039;192.168.1.34&#039;,name:&#039;Note&#039;},
  {ip:&#039;192.168.1.220&#039;,name:&#039;Asus&#039;}
 ],
 n=new ActiveXObject(&#039;WScript.Network&#039;).ComputerName,
 t=&#039;&#039;;

//var w=GetObject(&#039;winmgmts://.\\Root\\CIMV2&#039;);

for(i=0;i&lt;a.length;i++)if(n.toLowerCase()!=a[i].name.toLowerCase())
 t+=&#039;хост: &#039;+a[i].ip+&#039;   \t(&#039;+a[i].name+&#039;)          \t&#039;+

 (GetObject(&#039;winmgmts://.\\Root\\CIMV2:Win32_PingStatus.address=&quot;&#039;+a[i].ip+&#039;&quot;&#039;).statusCode?
// (w.ExecQuery(&#039;Select * From Win32_PingStatus Where address = &quot;&#039;+a[i].ip+&#039;&quot;&#039;).statusCode?

 &#039;НЕ&#039;:&#039;&#039;)+&#039;доступен\n&#039;;

WScript.echo(t);</code></pre></div><p>Можно ли создать объект WMI один раз, а в цикле вызывать его для разных айпишников? Закомментированные строки - это мои попытки (неудачные) реализовать задуманное.</p>]]></content>
			<author>
				<name><![CDATA[Serge Yolkin]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27503</uri>
			</author>
			<updated>2014-06-27T23:47:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=84327#p84327</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Определение ip-адреса адаптера.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=84325#p84325" />
			<content type="html"><![CDATA[<p>А можно просто зайти из &quot;внешнего инета&quot; на роутер и посмотреть, какие MAC-адреса видны?</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2014-06-27T19:00:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=84325#p84325</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Определение ip-адреса адаптера.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=84324#p84324" />
			<content type="html"><![CDATA[<p>это уже сделал давно, не помогает + инет плохой 1 мбит</p>]]></content>
			<author>
				<name><![CDATA[im2002]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28063</uri>
			</author>
			<updated>2014-06-27T18:56:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=84324#p84324</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Определение ip-адреса адаптера.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=84323#p84323" />
			<content type="html"><![CDATA[<p><em>Оффтоп:</em><br />Если, на машинах конторы есть внешний инет, то как вариант - поставить на всех них бесплатный клиент &quot;<strong>Team Viewer</strong>&quot; <br />и будете своим клиентом TM снаружи видеть наличие их компов в сети.</p><br /><p>И ещё вариант: повесить всем в автозагрузку скрипт, проверящий перидически наличие пинга с их роутером, и выводящий при отсутствии связи некое окно - и они без Вас поймут, что креслом очередной раз патчкорд перееден.<br />Кстати, программка &quot;<strong>BackGround Info</strong>&quot; красиво выводит прямо на рабочий стол некую инфу и в т.ч. результат работы пользовательского скрипта.</p>]]></content>
			<author>
				<name><![CDATA[Rom5]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5724</uri>
			</author>
			<updated>2014-06-27T18:53:49Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=84323#p84323</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Определение ip-адреса адаптера.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=84310#p84310" />
			<content type="html"><![CDATA[<p>Нет, там ситуация такая: маленькая фирма - 7 компов в рабочей группе + 1 роутер + 1 сетевой принтер - это всё то, что имеет ip-адреса. Поскольку сама сетевая структура (провода, патч-корды) валяется буквально под ногами, то они (сотрудники) естественно всё это так или иначе &quot;дёргают&quot; и контакты отваливаются... Потом, собаки, звонят ко мне приезжай мол у нас принтер не работает... а дело в том, что сетевой кабель от компа отвалился. Приводить в порядок СКС они не хотят, денег за это не платят, а это монтаж надо новый делать. Я у них 1 день работаю в неделю, так вот хотел написать такой скрипт, который можно было бы запустить с любой рабочей станции, и&nbsp; по его отработке видеть какие узлы она (станция) видит, а какие нет и потом уж соответствующие провода дёргать... Вот как-то так... Тему начал эту потому что сразу хотел отсечь проверку того Ip, с которого запускается скрипт, но понял, что анализ по IP, это геморрой! Поэтому написал по другому, отталкиваясь не от IP адресов а от NetBIOS имён ПК. Думаю всё будет работать. <br />Вот такой код:</p><div class="codebox"><pre><code>var fso = new ActiveXObject(&quot;Scripting.FileSystemObject&quot;);    
var wshshell = WScript.CreateObject(&quot;WScript.Shell&quot;);    
var netObj = new ActiveXObject(&quot;WScript.Network&quot;);    
var rezult = &quot;C:\\live_IP.txt&quot;;                                       // путь к файлу результата

var ipArray = [&quot;192.168.1.205&quot;, &quot;192.168.1.200&quot;, &quot;89.106.192.3&quot;, &quot;192.168.1.248&quot;, &quot;192.168.1.10&quot;, &quot;172.18.0.4&quot;];        
                                                                  // массив ip-адресов
var ipHosts = [&quot;Inet&quot;, &quot;Main&quot;, &quot;Internet-HOST&quot;, &quot;NhmS241&quot;, &quot;Printer-Buh&quot;, &quot;NAUGAD&quot;];
                                                                  // массив имён

var compName = netObj.ComputerName;

for(i=0; i&lt;ipHosts.length; i++)
    {
    if(compName.toLowerCase() == ipHosts[i].toLowerCase())
        {
        ipHosts.splice(i, 1), ipArray.splice(i, 1);    
        }
    }

if(fso.FileExists(rezult) == true)                
    {
    fso.DeleteFile(rezult, true);
    }

for(f=0; f&lt;ipArray.length; f++)                
    {
    var name = ipArray[f];
    Aviable(name);
    }

wshshell.run(&#039;notepad.exe &#039; + rezult, 1, true);

function Aviable(name)
    {
    var objClass = GetObject(&quot;winmgmts://.\\Root\\CIMV2:Win32_PingStatus.address=\&quot;&quot; + name + &quot;\&quot;&quot;); 
                            
    if(objClass.StatusCode == 0)                
        {
        var txtfl = fso.OpenTextFile(rezult, 8, true);        
        txtfl.WriteLine(&quot;Сетевой хост с IP =  &quot; + name + &quot;  и именем &quot; + ipHosts[f] + &quot;  ДОСТУПЕН&quot;);
        txtfl.WriteLine(&quot;----------------------------------------------------&quot;);
        txtfl.WriteBlankLines(1);                
        txtfl.close();                        
        }
    else
        {
        var txtfl = fso.OpenTextFile(rezult, 8, true);        
        txtfl.WriteLine(&quot;Сетевой хост с IP =  &quot; + name + &quot;  и именем &quot; + ipHosts[f] + &quot;  НЕ ДОСТУПЕН&quot;);
        txtfl.WriteLine(&quot;----------------------------------------------------&quot;);
        txtfl.WriteBlankLines(1);                
        txtfl.close();                    
        }
    }</code></pre></div><p>Ip - адреса - статика, имена так же никто не меняет, немного доработаю, чтобы 1-м пинговал роутер и в случае неудачи, сообщал, что надо проверить подключение своего ПК, хотя можно и так, ка щас...<br />Ну вот пожалуй и всё, растолкую как и что, думаю меня это от лишних поездок избавит.</p>]]></content>
			<author>
				<name><![CDATA[im2002]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28063</uri>
			</author>
			<updated>2014-06-27T17:07:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=84310#p84310</id>
		</entry>
</feed>
