IP 주소를 역방향으로 읽는 방법은 무엇입니까?

IP 주소를 역방향으로 읽는 방법은 무엇입니까?

이 문자열이 있는 경우(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

관련 정보