Shell

如何反向讀取IP地址?

  • March 22, 2022

如果我們有這個字元串(IP 地址):192.168.1.1

我怎樣才能從這個字元串中導出(DNS 反向記錄形式),所以它會像1.1.168.192.in-addr.arpa使用 shell 腳本一樣顯示?

你可以用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 非常靈活。:)

*只是為了好奇的價值……*使用tac來自 GNU coreutils:給定一個變數ip,形式為192.168.1.1then

$(printf %s "$ip." | tac -s.)in-addr.arpa

IE

$ ip=192.168.1.1
$ rr=$(printf %s "$ip." | tac -s.)in-addr.arpa
$ echo "$rr"
1.1.168.192.in-addr.arpa

引用自:https://unix.stackexchange.com/questions/132779