0
iSCSIデバイス/dev/sdat
があるとします。どのようにターゲットのIPアドレスを知ることができますか?iscsiデバイスのターゲットIPアドレスを取得する
ターゲットドライバはSCSTで、イニシエータはiSCSIです。私が知っているのは、/dev/sdat
という名前のデバイスだけです。どのようにしてIPアドレスを取得するのですか?
iSCSIデバイス/dev/sdat
があるとします。どのようにターゲットのIPアドレスを知ることができますか?iscsiデバイスのターゲットIPアドレスを取得する
ターゲットドライバはSCSTで、イニシエータはiSCSIです。私が知っているのは、/dev/sdat
という名前のデバイスだけです。どのようにしてIPアドレスを取得するのですか?
私はこれを誇りに思っていませんが、それは仕事を完了します。少なくとも仕事を終わらせるという定義については、少なくとも。
基本的な考えはこれです。ターゲットIQNは、lsscsi -t
の出力から取得できます。 (あなたはすでにそれを持っていない場合は、私はあなたがそれをSCSI環境のいずれかの種類に不可欠です見つけると思います。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
次に、あなたがにiscsiadmにターゲットにIQNを養うことができますターゲットアドレスの出力を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 $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 $?