| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #!/bin/bash
- IQN=$1
- HOST=$2
- if [ -z "${IQN}" ]; then
- echo "usage: $0 TargetIQN [Host]"
- echo ""
- exit
- fi
- if [ ! -z "${HOST}" ]; then
- iscsiadm -m discovery -t sendtargets -o update -p ${HOST} &> /dev/null
- iscsiadm -m node -T ${IQN} -p ${HOST} -l &> /dev/null
- RETURNCODE=$?
- else
- iscsiadm -m node -T ${IQN} -l &> /dev/null
- RETURNCODE=$?
- fi
- sleep 0.5
- MULTIPATH=0
- IQNTESTLIST=$(grep -h ${IQN} /sys/class/iscsi_session/*/targetname)
- for IQNTEST in ${IQNTESTLIST}; do
- if [ "${IQNTEST}" != "${IQN}" ]; then
- echo "IQN login failed"
- echo ""
- exit
- fi
- MULTIPATH=$((MULTIPATH + 1))
- done
- SESSIONFOLDERLIST=$(grep -l ${IQN} /sys/class/iscsi_session/*/targetname | xargs realpath)
- declare -A ADDRESSES
- declare -A BLOCKDEVICES
- for SESSIONFOLDER in ${SESSIONFOLDERLIST}; do
- 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)
- ADDRESS="[${SESSION}]:scsi$HOST:${MAJOR}:${MINOR}:${LUN}"
- ADDRESSES+="${ADDRESS} "
- BLOCKDEVICE=$(echo "${SESSIONFOLDER}" | sed "s/\(.*\)\/iscsi_session.*/\1\/target${SCSIADDRESS}\/${FULLSCSIADDRESS}\/block/g" | xargs ls -1 | xargs printf "/dev/%s")
- BLOCKDEVICES+="${BLOCKDEVICE} "
- done
- multipath -r
- MULTIPATHDEVICE=$(multipath -l ${BLOCKDEVICES[0]} | grep 'mpath' | sed -e 's/^\([a-z]*\) .*/\1/g')
- if [ ! -z "${MULTIPATHDEVICE}" ]; then
- BLOCKDEVICE="/dev/mapper/${MULTIPATHDEVICE}"
- fi
- MOUNTPOINT="/mnt/iSCSI_${IQN}"
- mkdir -p ${MOUNTPOINT}
- FILESYSTEM=$(blkid ${BLOCKDEVICE})
- if [ -z "${FILESYSTEM}" ]; then
- echo "No Filesystem found, initialize using following command:"
- echo "mkfs.ext4 ${BLOCKDEVICE}"
- echo ""
- echo "And mount afterwards using:"
- echo "mount ${BLOCKDEVICE} ${MOUNTPOINT}"
- else
- mount -o discard ${BLOCKDEVICE} ${MOUNTPOINT}
- RETURNCODE=$?
- if [ "${RETURNCODE}" != "0" ]; then
- echo "IQN: ${IQN}"
- for ADDRESS in ${ADDRESSES}; do
- echo "Address: ${ADDRESS}"
- done
- echo "Device: ${BLOCKDEVICE}"
- echo "Mountpoint: ${MOUNTPOINT}"
- echo "Mounting failed"
- else
- echo "IQN: ${IQN}"
- for ADDRESS in ${ADDRESSES}; do
- echo "Address: ${ADDRESS}"
- done
- echo "Device: ${BLOCKDEVICE}"
- echo "Mountpoint: ${MOUNTPOINT}"
- echo "Mounting succeeded"
- fi
- fi
- echo ""
|