この文字列がある場合(IPアドレス):192.168.1.1
どうやって入手できますか(DNS逆記録フォーム)をこの文字列から抽出すると、1.1.168.192.in-addr.arpa
シェルスクリプトを使用しているように見えますか?
答え1
ただ好奇心の価値のために...GNU coreutilsを使用するtac
:変数が与えられると、フォーマットはip
次192.168.1.1
のようになります。
$(printf %s "$ip." | tac -s.)in-addr.arpa
つまり
$ ip=192.168.1.1
$ rr=$(printf %s "$ip." | tac -s.)in-addr.arpa
$ echo "$rr"
1.1.168.192.in-addr.arpa
答え2
あなたはこれを行うことができますAWK。もっと良い方法もありますが、これが最も簡単なようです。
echo '192.168.1.1' | awk 'BEGIN{FS="."}{print $4"."$3"."$2"."$1".in-addr.arpa"}'
これにより、IPアドレスの順序が逆になります。
Mikelが提案したように、いくつかのキーストロークを保存するために上記のステートメントをさらに短縮することができます。
echo '192.168.1.1' | awk -F . '{print $4"."$3"."$2"."$1".in-addr.arpa"}'
または
echo '192.168.1.1' | awk -F. '{print $4"."$3"."$2"."$1".in-addr.arpa"}'
または
echo '192.168.1.1' | awk -F. -vOFS=. '{print $4,$3,$2,$1,"in-addr.arpa"}'
AWKはとても柔軟です。 :)
答え3
zsh
シェル(、、、ksh93
)のみを使用したい場合は、bash
他の方法があります。
IFS=. read w x y z <<<'192.168.1.1'
printf '%d.%d.%d.%d.in-addr.arpa.' "$z" "$y" "$x" "$w"
または通常のシェルから:
echo '192.168.1.1' | { IFS=. read w x y z; echo "$z.$y.$w.$x.in-addr.arpa."; }
答え4
最後にルビー:
ruby -r ipaddr -e 'puts IPAddr.new(ARGV.first).reverse' 192.168.1.1
IPv6もサポートしています。
2607:F8B0:4000:080A:0000:0000:0000:2000
=> 0.0.0.2.0.0.0.0.0.0.0.0.0.0.0.0.a.0.8.0.0.0.0.4.0.b.8.f.7.0.6.2.ip6.arpa