获取iscsi设备的目标IP地址

时间:2017-05-24 09:24:27

标签: linux iscsi linux-scst

假设我有一个iSCSI设备/dev/sdat,我怎么知道它的目标IP地址?

目标驱动程序是SCST,启动程序是iSCSI。我所知道的只是一个名为/dev/sdat的设备,仅此而已。那么如何获取它的目标IP地址呢?

1 个答案:

答案 0 :(得分:1)

嗯,我并不为此感到自豪,但它完成了工作。至少对于完成工作的一些定义。

基本理念是这样的。您可以从lsscsi -t的输出中获取目标IQN。 (如果您还没有lsscsi程序,则需要# lsscsi -t [2:0:0:0] disk iqn.2009-12.com.blockbridge:t-pjxfzufjkp-illoghjk,t,0x1 /dev/sda [3:0:0:0] disk iqn.2009-12.com.blockbridge:t-pjxfzuecga-eajejghg,t,0x1 /dev/sdb [4:0:0:0] disk iqn.2009-12.com.blockbridge:t-pjxfzufjjo-pokqaja,t,0x1 /dev/sdd [5:0:0:0] disk iqn.2009-12.com.blockbridge:t-pjxfzufnfg-cqikkgl,t,0x1 /dev/sdc 程序。我认为您会发现它在任何类型的SCSI环境中都是必不可少的。)

# iscsiadm -m node -T iqn.2009-12.com.blockbridge:t-pjxfzufjkp-illoghjk | egrep 'node.conn.+address'

node.conn[0].address = 172.16.5.148

然后,您可以将目标IQN提供给iscsiadm,并在输出中为目标地址提供grep。

#!/usr/bin/bash

if [[ -z $1 ]]; then
    >&2 echo "Usage: devip.sh <device>"
    exit 1
fi

iqn=$(sudo lsscsi -t | grep "$1" | grep iqn | awk '{print $3}' | awk -F , '{print $1}')
if [[ -z "$iqn" ]]; then
    >&2 echo "IQN not found for \"$1\"."
    exit 1
fi

sudo iscsiadm -m node -T $iqn | egrep 'node.conn.+address' | awk -F ' *= *' '{print $2}'
exit $?

总而言之,你得到一个像这样的剧本。当然,这不存在各种错误处理,并且可能无法处理大约23种不同的情况。但是,嘿......它适用于我的环境!

$
相关问题