#!/bin/bash #set -x XCATPORT=3001 export XCATPORT #XCATMASTER="10.3.5.21" ADAPTERFILE="/tmp/adapterinfo" SCANNICLOG="/tmp/adapterscan.log" rm -f "$SCANNICLOG" >/dev/null 2>&1 if [ -f "$ADAPTERFILE" ]; then echo "rm -f $ADAPTERFILE" > "$SCANNICLOG" rm -f "$ADAPTERFILE" >> "$SCANNICLOG" 2>&1 fi echo '' > "$ADAPTERFILE" echo "findadapter" >> "$ADAPTERFILE" echo "cli" >> "$ADAPTERFILE" echo "$HOSTNAME" >> "$ADAPTERFILE" #scan adapters have recognized by operating system for n in /sys/class/net/*; do nic=${n##/sys/class/net/} if [ "$nic" == "lo" ]; then continue else echo '' >> "$ADAPTERFILE" tmp=`udevadm info /sys/class/net/"$nic" | grep " INTERFACE" | awk -F '=' '{print $2}'` if [ -n "$tmp" ]; then echo "$tmp" >> "$ADAPTERFILE" fi tmp=`udevadm info /sys/class/net/"$nic" | grep ID_NET_NAME | awk -F '=' '{print $2}'|sort -u| tr -s "\n" "," | sed "s/,$//g"` if [ -n "$tmp" ]; then echo "$tmp" >> "$ADAPTERFILE" fi tmp=`udevadm info /sys/class/net/"$nic" | grep DEVPATH | awk -F 'devices' '{print $2}'` if [ -n "$tmp" ]; then echo "${tmp%/net*}" >> "$ADAPTERFILE" fi tmp=`udevadm info /sys/class/net/"$nic" | grep ID_NET_NAME_MAC | awk -F '=' '{print $2}'` if [ -n "$tmp" ]; then echo "${tmp##*enx}" >> "$ADAPTERFILE" fi tmp=`udevadm info /sys/class/net/"$nic" | grep ID_VENDOR_FROM_DATABASE | awk -F '=' '{print $2}' | tr -s "\n" "," | sed "s/,$//g"` if [ -n "$tmp" ]; then echo "$tmp" >> "$ADAPTERFILE" fi tmp=`udevadm info /sys/class/net/"$nic" | grep ID_MODEL_FROM_DATABASE | awk -F '=' '{print $2}'` if [ -n "$tmp" ]; then echo "$tmp" >> "$ADAPTERFILE" fi echo '' >> "$ADAPTERFILE" fi done for pci in `lspci |awk '/Ethernet/ {print $1}' `; do if ! grep -q "$pci" "$ADAPTERFILE" 2 >/dev/null; then tmp=`lspci |grep "$pci"` echo '' >> "$ADAPTERFILE" echo "$pci" >> "$ADAPTERFILE" echo "${tmp##*:}" >> "$ADAPTERFILE" echo '' >> "$ADAPTERFILE" fi done for pci in `lspci |awk '/Network/ {print $1}' `; do if ! grep -q "$pci" "$ADAPTERFILE" 2 >/dev/null; then tmp=`lspci |grep "$pci"` echo '' >> "$ADAPTERFILE" echo "$pci" >> "$ADAPTERFILE" echo "${tmp##*: }" >> "$ADAPTERFILE" echo '' >> "$ADAPTERFILE" fi done for pci in `lspci |awk '/Mellanox/ {print $1}' `; do if ! grep -q "$pci" "$ADAPTERFILE" 2>/dev/null; then tmp=`lspci |grep "$pci"` echo '' >> "$ADAPTERFILE" echo "$pci" >> "$ADAPTERFILE" echo "${tmp##*: }" >> "$ADAPTERFILE" echo '' >> "$ADAPTERFILE" fi done echo "" >> "$ADAPTERFILE" cat "$ADAPTERFILE" if [ ! -z "$XCATMASTER" ]; then if [ -f /etc/xcat/cert.pem -a -f /etc/xcat/certkey.pem ]; then #use client cert if available echo "using /etc/xcat/certkey.pem and /etc/xcat/cert.pem to transmit scan result to $XCATMASTER" >> "$SCANNICLOG" cat "$ADAPTERFILE" | openssl s_client -key /etc/xcat/certkey.pem -cert /etc/xcat/cert.pem -connect $XCATMASTER:$XCATPORT 2>&1 >>"$SCANNICLOG" else echo "transmit scan result without customer certificate to $XCATMASTER" >> "$SCANNICLOG" cat "$ADAPTERFILE" | openssl s_client -connect $XCATMASTER:$XCATPORT 2>&1 >>"$SCANNICLOG" fi else for dhcps in `cat /var/lib/dhclient/dhclient.leases |grep dhcp-server|awk '{print $3}'|uniq|sed "s/;$//g"`; do echo "using /etc/xcat/certkey.pem and /etc/xcat/cert.pem to transmit scan result to $dhcps" >> "$SCANNICLOG" if [ -f /etc/xcat/cert.pem -a -f /etc/xcat/certkey.pem ]; then #use client cert if available cat "$ADAPTERFILE" | openssl s_client -key /etc/xcat/certkey.pem -cert /etc/xcat/cert.pem -connect $dhcps:$XCATPORT 2>&1 >>"$SCANNICLOG" else echo "transmit scan result without customer certificate to $dhcps" >> "$SCANNICLOG" cat "$ADAPTERFILE" | openssl s_client -connect $dhcps:$XCATPORT 2>&1 >>"$SCANNICLOG" fi done fi