获取 iSCSI 设备的目标 IP 地址
Get target IP address of an iscsi device
假设我有一个 iSCSI 设备 /dev/sdat
,我如何知道它的目标 IP 地址?
目标驱动是SCST,启动器是iSCSI。我只知道一个名为 /dev/sdat
的设备,仅此而已。那么如何获取目标的IP地址呢?
好吧,我并不为此感到自豪,但它完成了工作。至少对于完成工作的一些定义。
基本思路是这样的。您可以从 lsscsi -t
的输出中获取目标 IQN。 (如果您还没有 lsscsi
程序,您将需要它。我想您会发现它在任何类型的 SCSI 环境中都是必不可少的。)
# 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
然后,您可以将目标 IQN 馈送到 iscsiadm 并在目标地址的输出中进行 grep。
# iscsiadm -m node -T iqn.2009-12.com.blockbridge:t-pjxfzufjkp-illoghjk | egrep 'node.conn.+address'
node.conn[0].address = 172.16.5.148
将所有内容放在一起,您会得到这样的脚本。当然,这缺少各种错误处理,并且可能无法处理大约 23 种不同的情况。但是,嘿...它适用于我的环境!
#!/usr/bin/bash
if [[ -z ]]; then
>&2 echo "Usage: devip.sh <device>"
exit 1
fi
iqn=$(sudo lsscsi -t | grep "" | grep iqn | awk '{print }' | awk -F , '{print }')
if [[ -z "$iqn" ]]; then
>&2 echo "IQN not found for \"\"."
exit 1
fi
sudo iscsiadm -m node -T $iqn | egrep 'node.conn.+address' | awk -F ' *= *' '{print }'
exit $?
假设我有一个 iSCSI 设备 /dev/sdat
,我如何知道它的目标 IP 地址?
目标驱动是SCST,启动器是iSCSI。我只知道一个名为 /dev/sdat
的设备,仅此而已。那么如何获取目标的IP地址呢?
好吧,我并不为此感到自豪,但它完成了工作。至少对于完成工作的一些定义。
基本思路是这样的。您可以从 lsscsi -t
的输出中获取目标 IQN。 (如果您还没有 lsscsi
程序,您将需要它。我想您会发现它在任何类型的 SCSI 环境中都是必不可少的。)
# 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
然后,您可以将目标 IQN 馈送到 iscsiadm 并在目标地址的输出中进行 grep。
# iscsiadm -m node -T iqn.2009-12.com.blockbridge:t-pjxfzufjkp-illoghjk | egrep 'node.conn.+address'
node.conn[0].address = 172.16.5.148
将所有内容放在一起,您会得到这样的脚本。当然,这缺少各种错误处理,并且可能无法处理大约 23 种不同的情况。但是,嘿...它适用于我的环境!
#!/usr/bin/bash
if [[ -z ]]; then
>&2 echo "Usage: devip.sh <device>"
exit 1
fi
iqn=$(sudo lsscsi -t | grep "" | grep iqn | awk '{print }' | awk -F , '{print }')
if [[ -z "$iqn" ]]; then
>&2 echo "IQN not found for \"\"."
exit 1
fi
sudo iscsiadm -m node -T $iqn | egrep 'node.conn.+address' | awk -F ' *= *' '{print }'
exit $?