Zalecam posiadanie dedykowanej sieci, w odrębnym VLAN-ie zarządzającycm, do adresowania serwerów iLO, jednak, gdy ktoś ma pomieszane adresy wewnętrznych systemów i iLO, może mieć problem ze znalezieniem ich wszystkich, jeżeli ma słabą inwentaryzację. Mój skrypt pomoże znaleźć każde działające w sieci iLO i pomoże wszystkim, którzy mają iLO rozrzucone po sieciach produkcyjnych. A także tym, którzy posiadają dedykowane sieci, ale chcą otrzymać listę aktywnych interfejsów zarządzających.
Skrypt wymaga do działania aplikacji ipcalc oraz prips, o ile ipcalc jest do zainstalowania z repozytorium, albo po prostu jest dostępny w systemie, o tyle prips jest dostępny w mało której dystrybucji, dlatego polecam go skompilować, odpisałem to tutaj, zajmie to chwilę, a korzyści mogą być wymierne.
#!/bin/bash AffectedNetworks="10.1.192.0/24 10.1.197.0/24 10.2.192.0/24 10.2.197.0/24"; AffectedNetworks="10.1.197.0/24"; for AffectedNetwork in ${AffectedNetworks}; do { ExcludedBroadcast=$(ipcalc ${AffectedNetwork} --broadcast | awk -F'=' '{print $2}'); ExcludedNetwork=$(ipcalc ${AffectedNetwork} --network | awk -F'=' '{print $2}'); #Gdy brama jest pierwszym adresem po adresie sieci ExcludedGateway=$(ipcalc ${AffectedNetwork} --network | awk -F'=' '{print $2}' | awk -F'.' '{print $1"."$2"."$3"."$4+1}'); #Gdy brama jest ostatnim adresem przed adresem rozgloszeniowym # ExcludedGateway=$(ipcalc ${AffectedNetwork} --broadcast | awk -F'=' '{print $2}' | awk -F'.' '{print $1"."$2"."$3"."$4-1}'); ListOfIPs=$(/usr/local/bin/prips ${AffectedNetwork} | grep -Ev "${ExcludedBroadcast}$|${ExcludedNetwork}$|${ExcludedGateway}$"); for IPAddress in ${ListOfIPs}; do { # curl -k -s "${IPAddress}/xmldata?item=All" | grep 'iLO 4' >> CollectedData.txt; Response=$(curl --connect-timeout 1 -k -s "${IPAddress}/xmldata?item=CpqKey"); if [ $(echo ${Response} | grep PROLIANTKEY -c) -gt 0 ]; then { echo "<MGMTADDR>${IPAddress}</MGMTADDR>" >> CollectedData.txt; echo ${Response} | grep -Eo "<SBSN>(.*)</SBSN>" >> CollectedData.txt; echo ${Response} | grep -Eo "<LNAME>(.*)</LNAME>" >> CollectedData.txt; } fi } done } done