2017-05-24 8 views
0

iSCSIデバイス/dev/sdatがあるとします。どのようにターゲットのIPアドレスを知ることができますか?iscsiデバイスのターゲットIPアドレスを取得する

ターゲットドライバはSCSTで、イニシエータはiSCSIです。私が知っているのは、/dev/sdatという名前のデバイスだけです。どのようにしてIPアドレスを取得するのですか?

答えて

1

私はこれを誇りに思っていませんが、それは仕事を完了します。少なくとも仕事を終わらせるという定義については、少なくとも。

基本的な考えはこれです。ターゲット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 $? 
関連する問題