fusioninventory / fusioninventory-agent

FusionInventory Agent
http://fusioninventory.org/
GNU General Public License v2.0
252 stars 125 forks source link

Support for iLO interfaces that don't report IP but dns name. #140

Open yoshi314 opened 8 years ago

yoshi314 commented 8 years ago

I've noticed that if ilo interface has dns name instead of IP, it doesn't get reported.

This small patch makes FA look for dns name and translates it into IP address, and the iLO interface appears on the list of interfaces of a given machine.

This diff is against 2.2.3-8 from debian wheezy. It should apply easily, though.


--- iLO.pm  2012-06-14 00:00:00.000000000 +0200
+++ /usr/share/fusioninventory/lib/FusionInventory/Agent/Task/Inventory/Input/Linux/iLO.pm  2016-07-15 12:54:11.058693554 +0200
@@ -2,6 +2,7 @@

 use strict;
 use warnings;
+use Socket;

 use FusionInventory::Agent::Tools;
 use FusionInventory::Agent::Tools::Network;
@@ -23,8 +24,12 @@
         MANAGEMENT  => 'iLO',
         STATUS      => 'Down',
     };
+    my $name='';
+    my $domainname='';

     while (my $line = <$handle>) {
+
+   
         if ($line =~ /<IP_ADDRESS VALUE="($ip_address_pattern)"\/>/) {
             $interface->{IPADDRESS} = $1 unless $1 eq '0.0.0.0';
         }
@@ -34,6 +39,12 @@
         if ($line =~ /<GATEWAY_IP_ADDRESS VALUE="($ip_address_pattern)"\/>/) {
             $interface->{IPGATEWAY} = $1;
         }
+   if ($line =~ /<DNS_NAME VALUE="(\w+)"\/>/) {
+       $name=$1;
+   }
+   if ($line =~ /<DOMAIN_NAME VALUE="(\S+)"\/>/) {
+       $domainname=$1;
+   }
         if ($line =~ /<NIC_SPEED VALUE="([0-9]+)"\/>/) {
             $interface->{SPEED} = $1;
         } 
@@ -47,6 +58,14 @@
         }
     }
     close $handle;
+
+    if (!$name eq '') {
+       if (!$domainname eq '') {
+           $name = $name . '.' . $domainname ;
+       }
+       $interface->{IPADDRESS} = inet_ntoa(inet_aton($name));
+       }
+
     $interface->{IPSUBNET} = getSubnetAddress(
         $interface->{IPADDRESS}, $interface->{IPMASK}
     );
yoshi314 commented 8 years ago

if ($line =~ /<DNS_NAME VALUE="(\w+)"\/>/) {

should be

if ($line =~ /<DNS_NAME VALUE="(\S+)"\/>/) {

for some hosts that have "-" in the name, etc.

yoshi314 commented 8 years ago

This needs a few more addons to pass the testsuite. I'll post them in a few hours.

yoshi314 commented 8 years ago
--- iLO.pm.org  2016-07-20 13:09:54.446096603 +0200
+++ iLO.pm  2016-07-20 13:09:05.149596889 +0200
@@ -2,6 +2,7 @@

 use strict;
 use warnings;
+use Socket;

 use FusionInventory::Agent::Tools;
 use FusionInventory::Agent::Tools::Network;
@@ -23,10 +24,16 @@
         MANAGEMENT  => 'iLO',
         STATUS      => 'Down',
     };
+    my $name='';
+    my $domainname='';
+    my $resolvedip='';

     while (my $line = <$handle>) {
+
+   
         if ($line =~ /<IP_ADDRESS VALUE="($ip_address_pattern)"\/>/) {
             $interface->{IPADDRESS} = $1 unless $1 eq '0.0.0.0';
+       $resolvedip = $1 unless $1 eq '0.0.0.0';
         }
         if ($line =~ /<SUBNET_MASK VALUE="($ip_address_pattern)"\/>/) {
             $interface->{IPMASK} = $1;
@@ -34,6 +41,12 @@
         if ($line =~ /<GATEWAY_IP_ADDRESS VALUE="($ip_address_pattern)"\/>/) {
             $interface->{IPGATEWAY} = $1;
         }
+   if ($line =~ /<DNS_NAME VALUE="(\S+)"\/>/) {
+       $name=$1;
+   }
+   if ($line =~ /<DOMAIN_NAME VALUE="(\S+)"\/>/) {
+       $domainname=$1;
+   }
         if ($line =~ /<NIC_SPEED VALUE="([0-9]+)"\/>/) {
             $interface->{SPEED} = $1;
         }
@@ -47,6 +60,17 @@
         }
     }
     close $handle;
+
+    if ((!$name eq '') && ($resolvedip eq '')) {
+       if (!$domainname eq '') {
+           $name = $name . '.' . $domainname ;
+       }
+    if (defined inet_aton($name)) { 
+      $resolvedip = inet_ntoa(inet_aton($name));
+      $interface->{IPADDRESS} = $resolvedip;
+    }
+       }
+
     $interface->{IPSUBNET} = getSubnetAddress(
         $interface->{IPADDRESS}, $interface->{IPMASK}
     );

fixed for names that are impossible to resolve (configured but not in dns records).

guillomovitch commented 8 years ago

It may be a stupid remark, but I don't understand how a device without an IP address would be able to autoconfigure itself, even with a DNS hostname: in order to resolve it, it should be able to send a query to a DNS server... through a unicast UDP or TCP communication, both of them requiring a valid IP source address. If such settings (ie, no IP address, just an hostname) results in a non-functional device, why should the agent report it as it it was functional ?

yoshi314 commented 8 years ago

I think the problem is that if hponcfg only returns dns name + domainname in some cases, and no ip address.

I have plenty of machines like that.

If that is just a case of missing dns entries, i can go fix it. But i had a few cases where the name resolved, which is puzzling.

yoshi314 commented 8 years ago

This is either specific to ilo 1.x or ilo that gets its address off dhcp. It may be a stupid policy, but i have no say in the matter.

yoshi314 commented 8 years ago

updated the script to return ilo ip if it is stated directly (missed that one before)

package FusionInventory::Agent::Task::Inventory::Linux::Networks::iLO;

use strict;
use warnings;
use Socket;

use FusionInventory::Agent::Tools;
use FusionInventory::Agent::Tools::Network;

sub isEnabled {
    return canRun('hponcfg');
}

sub _parseHponcfg {
    my (%params) = @_;

    my $handle = getFileHandle(%params);

    return unless $handle;

    my $interface = {
        DESCRIPTION => 'Management Interface - HP iLO',
        TYPE        => 'ethernet',
        MANAGEMENT  => 'iLO',
        STATUS      => 'Down',
    };
    my $name='';
    my $domainname='';
    my $resolvedip='';

    while (my $line = <$handle>) {

        if ($line =~ /<IP_ADDRESS VALUE="($ip_address_pattern)"\/>/) {
            $interface->{IPADDRESS} = $1 unless $1 eq '0.0.0.0';
        $resolvedip = $1 unless $1 eq '0.0.0.0';
        }
        if ($line =~ /<SUBNET_MASK VALUE="($ip_address_pattern)"\/>/) {
            $interface->{IPMASK} = $1;
        }
        if ($line =~ /<GATEWAY_IP_ADDRESS VALUE="($ip_address_pattern)"\/>/) {
            $interface->{IPGATEWAY} = $1;
        }
   if ($line =~ /<DNS_NAME VALUE="(\S+)"\/>/) {
       $name=$1;
   }
   if ($line =~ /<DOMAIN_NAME VALUE="(\S+)"\/>/) {
       $domainname=$1;
   }
        if ($line =~ /<NIC_SPEED VALUE="([0-9]+)"\/>/) {
            $interface->{SPEED} = $1;
        }
        if ($line =~ /<ENABLE_NIC VALUE="Y"\/>/) {
            $interface->{STATUS} = 'Up';
        }
        if ($line =~ /not found/) {
            chomp $line;
            $params{logger}->error("error in hponcfg output: $line")
                if $params{logger};
        }
    }
    close $handle;

    if (!$resolvedip eq '') {
       $interface->{IPADDRESS} = $resolvedip;
    }

    if ((!$name eq '') && ($resolvedip eq '')) {
       if (!$domainname eq '') {
           $name = $name . '.' . $domainname ;
       }
     if (defined inet_aton($name)) { 
       $resolvedip = inet_ntoa(inet_aton($name));
       $interface->{IPADDRESS} = $resolvedip;
     }
       }

    $interface->{IPSUBNET} = getSubnetAddress(
        $interface->{IPADDRESS}, $interface->{IPMASK}
    );

    return $interface;
}

sub doInventory {
    my (%params) = @_;

    my $inventory = $params{inventory};
    my $logger    = $params{logger};

    my $entry = _parseHponcfg(
        logger => $logger,
        command => 'hponcfg -aw -'
    );

    $inventory->addEntry(
        section => 'NETWORKS',
        entry   => $entry
    );
}

1;
guillomovitch commented 8 years ago

No need to past so much code, as long as I'm not convinced about the exact use case.

If I understand correctly, those device could either be configured statically, or dynamically through DHCP. In this last case, there won't be any IP address in the configuration, for obvious reasons, and we should rely on another mechanism to retrieve the actual device state. Am I correct ?

Now I have two questions:

Providing samples of 'hponcfg -aw -' output, demonstrating those different cases, would help understanding the issue (and build related tests, also).

yoshi314 commented 8 years ago

Yes. I think hponcfg output should say something about network configuration

Sample hponcfg from an iLOv3 with dhcp enabled; i've redacted the hostname and domain.

DHCP_ENABLE VALUE is apparently the information that indicates the dhcp client setup.

From looking around in ilo, enabling dhcp disables customization of any ipv4/ipv6 settings, you can only set the hostname, and domain is configured to be obtained via dhcp (it's optional).

<!-- HPONCFG VERSION = "4.2.0" -->
<!-- Device: iLO3  Firmware Version : 1.87 -->
<RIBCL VERSION="2.0">
  <LOGIN USER_LOGIN="admin" PASSWORD="password">
<RIB_INFO mode="write"><MOD_NETWORK_SETTINGS>
    <ENABLE_NIC VALUE="Y"/>
    <SHARED_NETWORK_PORT VALUE="N"/>
    <VLAN_ENABLED VALUE="N"/>

    <SPEED_AUTOSELECT VALUE="Y"/>

    <DHCP_ENABLE VALUE="Y"/>
    <DHCP_GATEWAY VALUE="Y"/>
    <DHCP_DNS_SERVER VALUE="Y"/>
    <DHCP_WINS_SERVER VALUE="Y"/>
    <DHCP_STATIC_ROUTE VALUE="Y"/>
    <DHCP_DOMAIN_NAME VALUE="Y"/>
    <DHCP_SNTP_SETTINGS VALUE="Y"/>
    <REG_WINS_SERVER VALUE="Y"/>
    <REG_DDNS_SERVER VALUE="Y"/>
    <PING_GATEWAY VALUE="Y"/>

    <SUBNET_MASK VALUE="255.255.254.0"/>

    <DNS_NAME VALUE="hostname"/>
    <DOMAIN_NAME VALUE="domain.com"/>

    <PRIM_WINS_SERVER VALUE="0.0.0.0"/>
    <SEC_WINS_SERVER VALUE="0.0.0.0"/>
    <SNTP_SERVER1 VALUE="192.168.190.254"/>
    <SNTP_SERVER2 VALUE=""/>
    <TIMEZONE VALUE="Europe/London"/>
    <STATIC_ROUTE_1 DEST="0.0.0.0" MASK="0.0.0.0" GATEWAY="0.0.0.0"/>
    <STATIC_ROUTE_2 DEST="0.0.0.0" MASK="0.0.0.0" GATEWAY="0.0.0.0"/>
    <STATIC_ROUTE_3 DEST="0.0.0.0" MASK="0.0.0.0" GATEWAY="0.0.0.0"/>

    <IPV6_STATIC_ROUTE_1 IPV6_DEST="::" PREFIXLEN="0" IPV6_GATEWAY="::" ADDR_STATUS="INACTIVE"/>
    <IPV6_STATIC_ROUTE_2 IPV6_DEST="::" PREFIXLEN="0" IPV6_GATEWAY="::" ADDR_STATUS="INACTIVE"/>
    <IPV6_STATIC_ROUTE_3 IPV6_DEST="::" PREFIXLEN="0" IPV6_GATEWAY="::" ADDR_STATUS="INACTIVE"/>
    <IPV6_PRIM_DNS_SERVER VALUE="::"/>
    <IPV6_SEC_DNS_SERVER VALUE="::"/>
    <IPV6_TER_DNS_SERVER VALUE="::"/>
    <IPV6_DEFAULT_GATEWAY VALUE="::"/>
    <IPV6_PREFERRED_PROTOCOL VALUE="Y"/>
    <IPV6_ADDR_AUTOCFG VALUE="Y"/>
    <IPV6_REG_DDNS_SERVER VALUE="Y"/>
    <DHCPV6_STATELESS_ENABLE VALUE="Y"/>
    <DHCPV6_STATEFUL_ENABLE VALUE="Y"/>
    <DHCPV6_RAPID_COMMIT VALUE="N"/>
    <DHCPV6_DOMAIN_NAME VALUE="N"/>
    <DHCPV6_SNTP_SETTINGS VALUE="Y"/>
    <DHCPV6_DNS_SERVER VALUE="Y"/>
</MOD_NETWORK_SETTINGS></RIB_INFO>
<RIB_INFO mode="write"><MOD_GLOBAL_SETTINGS>
    <SESSION_TIMEOUT VALUE="30"/>
    <ILO_FUNCT_ENABLED VALUE="Y"/>
    <F8_PROMPT_ENABLED VALUE="Y"/>
    <F8_LOGIN_REQUIRED VALUE="N"/>
    <HTTPS_PORT VALUE="443"/>
    <HTTP_PORT VALUE="80"/>
    <REMOTE_CONSOLE_PORT VALUE="17990"/>
    <VIRTUAL_MEDIA_PORT VALUE="17988"/>
    <SSH_PORT VALUE="22"/>
    <SSH_STATUS VALUE="Y"/>
    <SERIAL_CLI_STATUS VALUE="3"/>
    <SERIAL_CLI_SPEED VALUE="5"/>
    <MIN_PASSWORD VALUE="8"/>
    <AUTHENTICATION_FAILURE_LOGGING VALUE="3"/>
    <RBSU_POST_IP VALUE="Y"/>
    <ENFORCE_AES VALUE="N"/>
    <IPMI_DCMI_OVER_LAN_ENABLED VALUE="Y"/>
    <PROPAGATE_TIME_TO_HOST VALUE="N"/>
</MOD_GLOBAL_SETTINGS></RIB_INFO>
<DIR_INFO mode="write"><MOD_DIR_CONFIG>
    <DIR_AUTHENTICATION_ENABLED VALUE="Y"/>
    <DIR_LOCAL_USER_ACCT VALUE="Y"/>
    <DIR_SERVER_ADDRESS VALUE="lubsdca01.company.com"/>
    <DIR_SERVER_PORT VALUE="636"/>
    <DIR_OBJECT_DN VALUE="CN=server,OU=iLO,OU=Servers,OU=company,DC=com"/>
    <DIR_USER_CONTEXT_1 VALUE="OU=iLO,OU=Servers,OU=company,DC=com"/>
    <DIR_USER_CONTEXT_2 VALUE="OU=DC,OU=Users,OU=company,DC=com"/>
    <DIR_USER_CONTEXT_3 VALUE=""/>
    <DIR_USER_CONTEXT_4 VALUE=""/>
    <DIR_USER_CONTEXT_5 VALUE=""/>
    <DIR_USER_CONTEXT_6 VALUE=""/>
    <DIR_USER_CONTEXT_7 VALUE=""/>
    <DIR_USER_CONTEXT_8 VALUE=""/>
    <DIR_USER_CONTEXT_9 VALUE=""/>
    <DIR_USER_CONTEXT_10 VALUE=""/>
    <DIR_USER_CONTEXT_11 VALUE=""/>
    <DIR_USER_CONTEXT_12 VALUE=""/>
    <DIR_USER_CONTEXT_13 VALUE=""/>
    <DIR_USER_CONTEXT_14 VALUE=""/>
    <DIR_USER_CONTEXT_15 VALUE=""/>
    <DIR_ENABLE_GRP_ACCT VALUE="N"/>
    <DIR_GRPACCT1_NAME VALUE="Administrators"/>
    <DIR_GRPACCT1_PRIV VALUE="1,2,3,4,5,6"/>
    <DIR_GRPACCT1_SID VALUE=""/>
    <DIR_GRPACCT2_NAME VALUE="Authenticated Users"/>
    <DIR_GRPACCT2_PRIV VALUE="6"/>
    <DIR_GRPACCT2_SID VALUE="S-1-5-11"/>
    <DIR_KERBEROS_ENABLED VALUE="N"/>
    <DIR_KERBEROS_REALM VALUE=""/>
    <DIR_KERBEROS_KDC_ADDRESS VALUE=""/>
    <DIR_KERBEROS_KDC_PORT VALUE="88"/>
</MOD_DIR_CONFIG></DIR_INFO>
<RIB_INFO mode="write"><MOD_SNMP_IM_SETTINGS>
    <SNMP_ADDRESS_1 VALUE=""/>
    <SNMP_ADDRESS_2 VALUE=""/>
    <SNMP_ADDRESS_3 VALUE=""/>
    <RIB_TRAPS VALUE="Y"/>
    <OS_TRAPS VALUE="Y"/>
    <SNMP_PASSTHROUGH_STATUS VALUE="Y"/>
    <WEB_AGENT_IP_ADDRESS VALUE="hostname"/>
    <CIM_SECURITY_MASK VALUE="3"/>
</MOD_SNMP_IM_SETTINGS></RIB_INFO>
<SERVER_INFO mode="write"><SET_HOST_POWER_SAVER HOST_POWER_SAVER="3"/></SERVER_INFO>
<USER_INFO mode="write">
<ADD_USER USER_NAME="Administrator" USER_LOGIN="Administrator" PASSWORD="%user_password%"><ADMIN_PRIV value="Y"/><REMOTE_CONS_PRIV value="Y"/><RESET_SERVER_PRIV value="Y"/><VIRTUAL_MEDIA_PRIV value="Y"/><CONFIG_ILO_PRIV value="Y"/></ADD_USER>
<ADD_USER USER_NAME="admin" USER_LOGIN="admin" PASSWORD="%user_password%"><ADMIN_PRIV value="Y"/><REMOTE_CONS_PRIV value="Y"/><RESET_SERVER_PRIV value="Y"/><VIRTUAL_MEDIA_PRIV value="Y"/><CONFIG_ILO_PRIV value="Y"/></ADD_USER>
</USER_INFO>
<SSO_INFO mode="write"><MOD_SSO_SETTINGS><TRUST_MODE VALUE="DISABLED"/><USER_ROLE LOGIN_PRIV="Y"/><USER_ROLE REMOTE_CONS_PRIV="N"/><USER_ROLE VIRTUAL_MEDIA_PRIV="N"/><USER_ROLE RESET_SERVER_PRIV="N"/><USER_ROLE CFG_ILO_PRIV="N"/><USER_ROLE ADMIN_PRIV="N"/><OPERATOR_ROLE LOGIN_PRIV="Y"/><OPERATOR_ROLE REMOTE_CONS_PRIV="Y"/><OPERATOR_ROLE VIRTUAL_MEDIA_PRIV="Y"/><OPERATOR_ROLE RESET_SERVER_PRIV="Y"/><OPERATOR_ROLE CFG_ILO_PRIV="N"/><OPERATOR_ROLE ADMIN_PRIV="N"/><ADMINISTRATOR_ROLE LOGIN_PRIV="Y"/><ADMINISTRATOR_ROLE REMOTE_CONS_PRIV="Y"/><ADMINISTRATOR_ROLE VIRTUAL_MEDIA_PRIV="Y"/><ADMINISTRATOR_ROLE RESET_SERVER_PRIV="Y"/><ADMINISTRATOR_ROLE CFG_ILO_PRIV="Y"/><ADMINISTRATOR_ROLE ADMIN_PRIV="Y"/></MOD_SSO_SETTINGS></SSO_INFO>
<SERVER_INFO mode="write"><SERVER_AUTO_PWR VALUE="RESTORE"/></SERVER_INFO>

</LOGIN>
</RIBCL>
Stoatwblr commented 6 years ago

I know I'm about a year late, but how does your ilo respond (assuming linux) if you use "ipmitool lan print" on the machine in question?

This would allow the system to crosscheck that the mac address is correct, etc.

Here's what I've got - as you can see it not only indicates dhcp/static configuration, it also shows the assigned DHCP address

ipmitool lan print

Set in Progress : Set Complete Auth Type Support : NONE MD2 MD5 PASSWORD Auth Type Enable : Callback : MD2 MD5 PASSWORD : User : MD2 MD5 PASSWORD : Operator : MD2 MD5 PASSWORD : Admin : MD2 MD5 PASSWORD : OEM : MD2 MD5 PASSWORD IP Address Source : DHCP Address IP Address : 192.168.141.2 Subnet Mask : 255.255.255.0 MAC Address : ac:1f:6b:03:ca:f8 SNMP Community String : public IP Header : TTL=0x00 Flags=0x00 Precedence=0x00 TOS=0x00 BMC ARP Control : ARP Responses Enabled, Gratuitous ARP Disabled Default Gateway IP : 192.168.141.252 Default Gateway MAC : 90:17:ac:b5:1a:ad Backup Gateway IP : 0.0.0.0 Backup Gateway MAC : 00:00:00:00:00:00 802.1q VLAN ID : Disabled 802.1q VLAN Priority : 0 RMCP+ Cipher Suites : 1,2,3,6,7,8,11,12 Cipher Suite Priv Max : XaaaXXaaaXXaaXX : X=Cipher Suite Unused : c=CALLBACK : u=USER : o=OPERATOR : a=ADMIN : O=OEM Bad Password Threshold : Not Available

(Yes, I know it shows the snmp community. That's not enabled)

yoshi314 commented 6 years ago

I'll check this out in a few hours. So far i get missing /dev/ipmi0 device, i'll have to look into that.

yoshi314 commented 6 years ago

I got it working, i just need to load extra kernel modules.

On one server that reports only fqdn but no ip via hponcfg :

Auth Type Support       : 
Auth Type Enable        : Callback : 
                        : User     : 
                        : Operator : 
                        : Admin    : MD2 PASSWORD OEM 
                        : OEM      : NONE MD2 PASSWORD 
IP Address Source       : DHCP Address
IP Address              : 192.168.191.119
Subnet Mask             : 255.255.252.0
MAC Address             : 00:1b:78:df:c7:48
BMC ARP Control         : ARP Responses Enabled, Gratuitous ARP Disabled
Gratituous ARP Intrvl   : 0.0 seconds
Default Gateway IP      : 192.168.190.254
802.1q VLAN ID          : Disabled
802.1q VLAN Priority    : 0
Cipher Suite Priv Max   : Not Available

the output of hponcfg -aw - :

  <LOGIN USER_LOGIN="admin" PASSWORD="password">
<RIB_INFO mode="write"><MOD_NETWORK_SETTINGS>
    <ENABLE_NIC VALUE="Y"/>
    <SPEED_AUTOSELECT VALUE="Y"/>
    <NIC_SPEED VALUE="10"/>
    <FULL_DUPLEX VALUE="N"/>
    <DHCP_ENABLE VALUE="Y"/>
    <DHCP_GATEWAY VALUE="Y"/>
    <DHCP_DNS_SERVER VALUE="Y"/>
    <DHCP_WINS_SERVER VALUE="Y"/>
    <DHCP_STATIC_ROUTE VALUE="Y"/>
    <DHCP_DOMAIN_NAME VALUE="Y"/>
    <REG_WINS_SERVER VALUE="Y"/>
    <REG_DDNS_SERVER VALUE="Y"/>
    <PING_GATEWAY VALUE="N"/>
    <GRATUITOUS_ARP VALUE="N"/>

    <SUBNET_MASK VALUE="255.255.252.0"/>

    <DNS_NAME VALUE="unused"/>
    <DOMAIN_NAME VALUE="company.com"/>

    <PRIM_WINS_SERVER VALUE="0.0.0.0"/>
    <SEC_WINS_SERVER VALUE="0.0.0.0"/>
    <STATIC_ROUTE_1 DEST="0.0.0.0" GATEWAY="0.0.0.0"/>
    <STATIC_ROUTE_2 DEST="0.0.0.0" GATEWAY="0.0.0.0"/>
    <STATIC_ROUTE_3 DEST="0.0.0.0" GATEWAY="0.0.0.0"/>
</MOD_NETWORK_SETTINGS></RIB_INFO>

The blank lines ought to have ip configuration, afaik.

g-bougard commented 6 years ago

Hi @yoshi314 since v2.3.15, agent supports an Ipmi module to parse ipmitool lan print command. Btw this should report your iLO card interface with a 'bmc' description. Did you see that on related servers ? In that case you may even have duplicated interface as we can see 2 times the same interface using 2 different commands. This may be a mistake. That said, next agent release will be able to discover and inventory iLO cards via Netdiscovery and Netinventory tasks as PR #382 is now included.

yoshi314 commented 6 years ago

I haven't noticed this update yet, but i'll give it a shot. The network scan should also resolve a lot of headaches, but i am not sure how will it bind ilo ip to a server in glpi.