2017-04-05 19 views
0

私は、静的IPアドレスを持つ仮想サーバが多く、Aレコードを持っています。私は、CMSのインストールに連想配列を使うべきです。しかし、私は考えがあります。たぶん私はdig、または他のdnsutilを使うべきでしょうか? だから、私は書き込みを何開始: nslookupコマンドで自分自身のIPアドレスを探す多くの人からip

start=test 
dns=com 
for i in "${start}" {1..20}."$dns"; do 
echo $i >> "/tmp/temp" 
done 

for ns in `cat /tmp/temp`; do 
if [[ `dig +short $ns=="192.168.110.1"` ]]; then 
dig +short $ns 
fi 
done 

しかし、間違った私の第2のループ何かで

。手伝って頂けますか ? 私はtest1.com、test2.comのような私のドメインでリストを生成する必要があります... その後、私はIPアドレスを取得する必要があります。次のステップは私のシステムのIPと比較し、もし私が192.168.110.1のIPを持っていれば、私はtest2.comのように自分のドメイン名を取得するべきです。それは動作しません、私は私の頭を壊したが、私はこれを行う方法、どのようなアイデアはありません。可能であれば、助けてください。

答えて

0

[[ `dig +short $ns=="192.168.110.1"` ]]は、の出力が空でない文字列であるかどうかをチェックするだけです(照会として渡す文字列は有効ではないため、空ではありません)。表面的な修正は

等号演算子の周りのスペースは重要であり、そしてもちろん、比較が引数としてに渡すべきではありません
if [[ `dig +short "$ns"` == "192.168.110.1" ]]; then ... 

です。私はあなたのスクリプトをもっと多くリファクタリングします。スクリプトで何をしたいのかは完全には分かりませんが、このようなことは何ですか?

#!/bin/bash 
start=test 
dns=com 
for i in {1..20}; do 
    host="$start.$i.$dns" 
    ip=$(dig +short "$host") 
    if [[ "$ip" == "192.168.110.1" ]]; then 
     # I'm guessing you want to perform a reverse lookup on the IP address here? 
     dig +short "$ip" 
    fi 
done 
+0

'{1..20}'中括弧拡張はBashのみです。あなたは 'for'ループを' seq 1 20 |読んでいる間はi; do'を実行すると、スクリプトは 'sh'互換になります。 – tripleee

関連する問題