Найти IP активного сетевого интерфейса? - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь выяснить, как с помощью ONVIF получить IP-адрес, который устройство использует в настоящее время.Например, у меня есть IP-камера, которая может быть подключена к сети через WiFi или Ethernet.Ответ на GetNetworkInterfaces выглядит следующим образом (и нет разницы, подключаю ли я или отсоединяю сетевой кабель):

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<s:Envelope xmlns:sc="http://www.w3.org/2003/05/soap-encoding" xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:tds="http://www.onvif.org/ver10/device/wsdl" xmlns:tt="http://www.onvif.org/ver10/schema">
  <s:Header/>
  <s:Body>
    <tds:GetNetworkInterfacesResponse>
      <tds:NetworkInterfaces token="eth0">
        <tt:Enabled>true</tt:Enabled>
        <tt:Info>
          <tt:Name>eth0</tt:Name>
          <tt:HwAddress>9c:8e:cd:03:00:85</tt:HwAddress>
          <tt:MTU>1500</tt:MTU>
        </tt:Info>
        <tt:Link>
          <tt:AdminSettings>
            <tt:AutoNegotiation>false</tt:AutoNegotiation>
            <tt:Speed>10</tt:Speed>
            <tt:Duplex>Full</tt:Duplex>
          </tt:AdminSettings>
          <tt:OperSettings>
            <tt:AutoNegotiation>false</tt:AutoNegotiation>
            <tt:Speed>10</tt:Speed>
            <tt:Duplex>Full</tt:Duplex>
          </tt:OperSettings>
          <tt:InterfaceType>6</tt:InterfaceType>
        </tt:Link>
        <tt:IPv4>
          <tt:Enabled>true</tt:Enabled>
          <tt:Config>
            <tt:Manual>
              <tt:Address>192.168.1.2</tt:Address>
              <tt:PrefixLength>24</tt:PrefixLength>
            </tt:Manual>
            <tt:DHCP>false</tt:DHCP>
          </tt:Config>
        </tt:IPv4>
        <tt:IPv6>
          <tt:Enabled>true</tt:Enabled>
          <tt:Config>
            <tt:AcceptRouterAdvert>false</tt:AcceptRouterAdvert>
            <tt:DHCP>Off</tt:DHCP>
            <tt:Manual>
              <tt:Address/>
              <tt:PrefixLength>0</tt:PrefixLength>
            </tt:Manual>
            <tt:LinkLocal>
              <tt:Address>fe80::9e8e:cdff:fe03:0085</tt:Address>
              <tt:PrefixLength>64</tt:PrefixLength>
            </tt:LinkLocal>
            <tt:FromRA>
              <tt:Address>2001:250:3000:3ca0:215:f2ff:fe5d:2301</tt:Address>
              <tt:PrefixLength>64</tt:PrefixLength>
            </tt:FromRA>
          </tt:Config>
        </tt:IPv6>
      </tds:NetworkInterfaces>
      <tds:NetworkInterfaces token="eth2">
        <tt:Enabled>true</tt:Enabled>
        <tt:Info>
          <tt:Name>eth2</tt:Name>
          <tt:HwAddress>9c:8e:cd:06:69:85</tt:HwAddress>
          <tt:MTU>1500</tt:MTU>
        </tt:Info>
        <tt:IPv4>
          <tt:Enabled>true</tt:Enabled>
          <tt:Config>
            <tt:FromDHCP>
              <tt:Address>192.168.1.15</tt:Address>
              <tt:PrefixLength>24</tt:PrefixLength>
            </tt:FromDHCP>
            <tt:DHCP>true</tt:DHCP>
          </tt:Config>
        </tt:IPv4>
        <tt:Extension>
          <tt:InterfaceType>71</tt:InterfaceType>
          <tt:Dot11>
            <tt:SSID>XXXXXX</tt:SSID>
            <tt:Mode>Extended</tt:Mode>
            <tt:Alias>Web_Default</tt:Alias>
            <tt:Priority>15</tt:Priority>
            <tt:Security>
              <tt:Mode>PSK</tt:Mode>
              <tt:Algorithm>TKIP</tt:Algorithm>
            </tt:Security>
          </tt:Dot11>
        </tt:Extension>
      </tds:NetworkInterfaces>
    </tds:GetNetworkInterfacesResponse>
  </s:Body>
</s:Envelope>

Есть ли способ узнать, какой активен сетевой интерфейс?

...