
DNSサーバーの名前を取得しようとしています4.2.2.1
。
これを使用すると、host 4.2.2.1
次のような出力が得られます。
1.2.2.4.in-addr.arpa domain name pointer a.resolvers.level3.net
私のスクリプトは次のことを行います。
name="$($host $server)"
変数を削除できないように、まったく異なるサーバーでこれを使用することを念頭に置いて、sed / awkを使用してをインポートするには$name
どうすればよいですか?a.resolvers.level3.net
grep a.resolvers
答え1
別のオプションは文字列を分割することです。
echo ${name##* }
これにより文字列が分割され、最後のスペースから最後まで部分が保持されます。
${name <-- from name
## <-- trim the front
* <-- matches anything
' ' <-- until the last ' '
}
答え2
awk
最も簡単な方法は、最後のフィールドを印刷するために使用して指示することです。
$ echo "$name" | awk '{print $NF}'
a.resolvers.level3.net
もちろん、サーバーのIPだけが必要な場合は、name
後で処理する必要がないように最初に入力することもできます。
name=$(host $server | awk '{print $NF}')
答え3
name=$(host "$server" | grep -o '[^[:space:]]*$')
ホストコマンド出力のテール部分が選択されます。
答え4
文字列操作をまったく含まない短い答えは次のとおりです。
dig +short -x 4.2.2.1
見せる
a.resolvers.level3.net.
それはすべてです。もちろん、digをインストールする必要があります。