hostname -d ничего не возвращает

Предположим, что var содержит ip:ip=192.168.2.1. Если значение необходимо присвоить новой переменной, просто заключите любое решение в $()и назначьте его переменной rr=$(...).

Возможны некоторые решения:

Простейший: printf 'arpa.in-addr.%s.' "$ip" | tac -s.
Большинство снарядов: IFS=. eval 'set -- $ip'; echo "$4.$3.$2.$1.in-addr.arpa"
Некоторые снаряды: IFS=. read d c b a <<<"$ip"; printf %s "$a.$b.$c.$d.in-addr.arpa."
: echo "$ip" | awk -F. '{OFS=FS;print $4,$3,$2,$1,"in-addr.arpa"}'
: echo "$ip" | sed -E 's/([^.]+)\.([^.]+)\.([^.]+)\.([^.]+)$/\4.\3.\2.\1.in-addr.arpa./'
: echo "arpa.in-addr.$ip" | sed 'y/./\n/' | sed 'G;$s/\n/./gp;h;d'
: echo "$ip" | perl -F\\. -lane '$,=".";print( join(".",(reverse @F),"in-addr.arpa"))'
: dig -x "$ip" | awk -F '[; \t]+' '/^;.*PTR$/{print($2)}'
: host -t ptr 192.168.2.1 | cut -d' ' -f2

Оба решения — dig и host — работают с IPv6.

0
03.06.2020, 11:27
0 ответов

Теги

Похожие вопросы