আমাদের যদি এই স্ট্রিং থাকে ( আইপি ঠিকানা ):192.168.1.1
আমি কীভাবে এই স্ট্রিং থেকে ( ডিএনএস বিপরীত রেকর্ড ফর্ম ) পেতে পারি , তাই এটি 1.1.168.192.in-addr.arpa
শেল স্ক্রিপ্ট ব্যবহার করার মতো দেখানো হবে ?
আমাদের যদি এই স্ট্রিং থাকে ( আইপি ঠিকানা ):192.168.1.1
আমি কীভাবে এই স্ট্রিং থেকে ( ডিএনএস বিপরীত রেকর্ড ফর্ম ) পেতে পারি , তাই এটি 1.1.168.192.in-addr.arpa
শেল স্ক্রিপ্ট ব্যবহার করার মতো দেখানো হবে ?
উত্তর:
আপনি এটি এডব্লিউকে দিয়ে করতে পারেন । এটি করার জন্য আরও সুন্দর উপায় রয়েছে তবে আমি মনে করি এটি সবচেয়ে সহজ।
echo '192.168.1.1' | awk 'BEGIN{FS="."}{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. '{print $4"."$3"."$2"."$1".in-addr.arpa"}'
অথবা
echo '192.168.1.1' | awk -F. -vOFS=. '{print $4,$3,$2,$1,"in-addr.arpa"}'
এডাব্লু কে বেশ নমনীয়। :)
-F .
তবে এর সমতুল্য হওয়া উচিত BEGIN{FS="."}
।
কেবল কৌতূহল মানের জন্য ...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
tac
!
printf
সম্পাদনার জন্য আমি @ echo -n
printf 'arpa.in-addr.%s.' "$ip" | tac -s.
পার্ল দিয়ে সহজেই:
$ echo 192.168.1.1|perl -nle 'print join ".",reverse(split /\./,$_)'
1.1.168.192
perl -F'\.' -lane '$,=".";print reverse @F'
এটি গোল করে দেখার জন্য, রুবি:
ruby -r ipaddr -e 'puts IPAddr.new(ARGV.first).reverse' 192.168.1.1
যা আইপিভি 6 সমর্থন করে
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
ruby -r ipaddr -e 'puts ...'
জিএনইউ এর মাধ্যমে sed
,
sed -r 's/^([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})$/\4.\3.\2.\1.in-addr.arpa/g' file
এটি কোনও আইপিভি 4-ঠিকানা ফর্ম্যাটকে বিপরীত করে।
উদাহরণ:
$ echo '192.168.1.1' | sed -r 's/^([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})$/\4.\3.\2.\1.in-addr.arpa/g'
1.1.168.192.in-addr.arpa
$ echo '192.1.1.1' | sed -r 's/^([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})$/\4.\3.\2.\1.in-addr.arpa/g'
1.1.1.192.in-addr.arpa
$ echo '1.1.1.1' | sed -r 's/^([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})$/\4.\3.\2.\1.in-addr.arpa/g'
1.1.1.1.in-addr.arpa
$ sed -r 's/^([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})$/\4.\3.\2.\1.in-addr.arpa/g' <<< '192.168.189.23'
23.189.168.192.in-addr.arpa
পাইথনের স্ট্যান্ডার্ড লাইব্রেরি ব্যবহার :
>>> ipaddress.ip_address('192.168.1.1').reverse_pointer
'1.1.168.192.in-addr.arpa'
python3.5 -c "import ipaddress; ipaddress.ip_address('192.168.1.1').reverse_pointer"
(এক লাইনে সব)
সাথে zsh
:
$ ip=192.168.1.1
$ echo ${(j:.:)${(s:.:Oa)ip}}.in-addr.arpa
1.1.168.192.in-addr.arpa
সেগুলি পরিবর্তনশীল প্রসারণের পতাকা:
s:.:
: এস প্লিট অন.
Oa
: বিপরীত হে রডার a rrayj:.:
: জে ওন অন.
আর একটি সম্ভাবনা হ'ল "-x" স্যুইচ সহ "ডিগ" কমান্ড লাইন সরঞ্জামটি ব্যবহার করা।
এটি পিটিআর এন্ট্রিতে আসলে একটি অনুরোধ করে, তবে আপনি যদি "পিটিআর" এ ফিল্টার করেন তবে এটি আপনাকে একটি মন্তব্য করা লাইন (অনুরোধ) এবং সম্ভবত কিছু উত্তর দেখিয়ে দেবে।
একটি ছোট স্ক্রিপ্ট না লিখে পিটিআর নামের দ্রুত লেখার জন্য "ডিগ" ব্যবহার করা সহজ হতে পারে। বিশেষত আপনার যদি ইন্টারঅ্যাকটিভভাবে এটির প্রয়োজন হয় (ফলাফলটি কাটাতে এবং পেস্ট করতে)। এটি আইপিভি 6-তেও কাজ করে।
আপনি যদি এটি আইপিভি 6 এর সাথেও কাজ করতে চান তবে আপনি এটি ব্যবহার করতে পারেন dig -x
।
উদাহরণ স্বরূপ:
$ dig -x 194.68.208.240 | egrep '^;.*PTR$' | cut -c 2- | awk '{print $1}'
240.208.68.194.in-addr.arpa.
$ dig -x 2001:db8:dc61:2a61::1 | egrep '^;.*PTR$' | cut -c 2- | awk '{print $1}'
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.6.a.2.1.6.c.d.8.b.d.0.1.0.0.2.ip6.arpa.
পাইথনে
a = "192.168.1.122"
import re
m = re.search(r'(\d+)\.(\d+)\.(\d+)\.(\d+)',a)
ip = m.group(4),m.group(3),m.group(2),m.group(1)
'.'.join(ip) + ".in-addr.arpa"
'122.1.168.192.in-addr.arpa'
"{}.in-addr.arpa".format(".".join(reversed(a.split("."))))
অদ্ভুতভাবে , পাইথন 2.7 এ
host
কমান্ড সহ dnsutils
:
$ host -t ptr 192.168.1.1 | cut -d' ' -f 2
1.1.168.192.in-addr.arpa.
একটি Var ধরে নেওয়া যাক আইপি রয়েছে: ip=192.168.2.1
। মানটি যদি কোনও নতুন ভেরিয়েবলকে দেওয়া দরকার হয়, তবে কেবল কোনও সমাধান ভিতরে loুকিয়ে দিন $()
এবং এটি ভারে নির্ধারণ করুন 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."
awk : 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'
Perl : 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
ডিগ এবং হোস্ট উভয় সমাধান আইপিভি 6 দিয়ে কাজ করে।
#!/bin/bash
# script file name reverseip.sh
if [ -z $1 ] || [ "help" == $1 ]
then
echo 'Convert a full ipv4 or ipv6 address to arpa notation'
echo "usage:"
echo ./reverseip.sh "help"
echo ./reverseip.sh "ipv4 address format: xxxx.xxxx.xxxx.xxxx"
echo ./reverseip.sh "ipv6 address format: xxxx:xxxx:xxxx:xxxx::xxxx"
echo "examples:"
echo ./reverseip.sh 216.58.207.35
echo ./reverseip.sh 2a00:1450:4001:824::2003
exit
fi
# if ip address passed containing ':'
if [[ $1 = *':'* ]];
then
# invert ipv6 address e.g.: 2a00:1450:4001:824::2003 to 3.0.0.2.0.0.0.0.0.0.0.0.0.0.0.0.4.2.8.0.1.0.0.4.0.5.4.1.0.0.a.2.
# @see lsowen https://gist.github.com/lsowen/4447d916fd19cbb7fce4
echo "$1" | awk -F: 'BEGIN {OFS=""; }{addCount = 9 - NF; for(i=1; i<=NF;i++){if(length($i) == 0){ for(j=1;j<=addCount;j++){$i = ($i "0000");} } else { $i = substr(("0000" $i), length($i)+5-4);}}; print}' | rev | sed -e "s/./&./g" | echo "$(</dev/stdin)ip6.arpa."
else
# invert ipv6 address e.g.: 216.58.207.35 to 35.207.58.216.in-addr.arpa
# @see Stéphane Chazelas /unix/132779/how-to-read-an-ip-address-backwards
echo $(printf %s "$1." | tac -s.)in-addr.arpa
fi
কম সরঞ্জাম সহ ম্যাটবিয়ানকো উত্তরের একটি সংক্ষিপ্ত বিকল্প , তবে পিসগ্রিগ ব্যবহার করা হতে পারে:
$ dig -x 194.68.208.240 | pcregrep -o1 '^;(\S+)\s+IN\s+PTR$'
240.208.68.194.in-addr.arpa.
$ dig -x 2001:db8:dc61:2a61::1 | pcregrep -o1 '^;(\S+)\s+IN\s+PTR$'
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.6.a.2.1.6.c.d.8.b.d.0.1.0.0.2.ip6.arpa.