#!/bin/bash IQN=$1 PrintIQN() { IQN=$1 IQNTEST=$(grep -h ${IQN} /sys/class/iscsi_session/*/targetname) if [ "${IQNTEST}" != "${IQN}" ]; then echo "IQN not found" echo "" exit fi SESSIONFOLDER=$(grep -l ${IQN} /sys/class/iscsi_session/*/targetname | xargs realpath) SESSION=$(echo "${SESSIONFOLDER}" | sed 's/.*session\([0-9]*\).*/\1/g') HOST=$(echo "${SESSIONFOLDER}" | sed 's/.*host\([0-9]*\).*/\1/g') SCSIADDRESS=$(echo "${SESSIONFOLDER}" | sed 's/\(.*\)\/iscsi_session.*/\1/g' | xargs ls -1 | grep "target${HOST}" | sed 's/target//g') MAJOR=$(echo "${SCSIADDRESS}" | cut -d ":" -f 2) MINOR=$(echo "${SCSIADDRESS}" | cut -d ":" -f 3) FULLSCSIADDRESS=$(echo "${SESSIONFOLDER}" | sed "s/\(.*\)\/iscsi_session.*/\1\/target${SCSIADDRESS}/g" | xargs ls -1 | grep ":") LUN=$(echo "${FULLSCSIADDRESS}" | cut -d ":" -f 4) BLOCKDEVICE=$(echo "${SESSIONFOLDER}" | sed "s/\(.*\)\/iscsi_session.*/\1\/target${SCSIADDRESS}\/${FULLSCSIADDRESS}\/block/g" | xargs ls -1 | xargs printf "/dev/%s") MOUNTPOINT=$(grep "${BLOCKDEVICE}" /proc/mounts | head -n 1 | cut -d " " -f 2) echo "IQN: ${IQN}" #echo " Session: ${SESSION}"; #echo " Host: ${HOST}"; #echo " Channel: ${MAJOR}"; #echo " Id: ${MINOR}"; #echo " LUN: ${LUN}"; echo " Address: [${SESSION}] scsi$HOST:${MAJOR}:${MINOR}:${LUN}" echo " Device: ${BLOCKDEVICE}"; echo " Mountpoint: ${MOUNTPOINT}"; echo } if [[ -z "${IQN}" ]]; then IQNLIST=$(cat /sys/class/iscsi_session/*/targetname) for IQN in ${IQNLIST}; do PrintIQN ${IQN} done; else PrintIQN ${IQN} fi