最終目標

最終目標

私の研究によると、nslookup実際にはスクリプトを使用するためのものではありませんでした。代わりに、クエリパラメータに基づいてマシンが読み取ることができる出力を生成するオプションdigと一緒に使用されました。+short

dig +short myip.opendns.com @resolver1.opendns.com

つまり、私のルータはdigをサポートしておらず、nslookup返されたIPアドレスを実際のIPアドレスと比較するための変数として保存しようとします。

ip = $(カール - 沈黙http://api.ipify.org/)

awkUbuntuで正常に:

nslookup yahoo.com  | awk -F': ' 'NR==6 { print $2 } '

ただし、DD-WRTルータではエラーが返されます。

nslookup: can't resolve '(null)'
2001:4998:58:1836::10 media-router-fp1.prod1.media.vip.bf1.yahoo.com

最終目標

CLIがあります.sh コマンドDDNSサービスの更新:測定と保存されたDDNSのIPアドレスが異なる場合は、更新コマンド(CRONジョブは5分ごとに確認)を実行したいと思います。

質問

上記のdigの例と同じ最も単純なnslookupは何ですか?

観察、フィードバック、テストエリア

2番目のパラメータが追加されました。

root@DD-WRT:/opt# nslookup mydomain.asuscomm.com  resolver1.opendns.com
Server:    208.67.222.222
Address 1: 208.67.222.222 resolver1.opendns.com

Name:      mydomain.asuscomm.com
Address 1: 7W.10X.7Y.6Z c-7W-10X-7Y-6Z.hsd1.fl.comcast.net

devnull: > /dev/null

root@DD-WRT:/opt# nslookup mydomain.asuscomm.com  > /dev/null
nslookup: can't resolve '(null)'

devnull: > /dev/null 2>&1

root@DD-WRT:/opt# nslookup mydomain.asuscomm.com  > /dev/null 2>&1
root@DD-WRT:/opt# 

nslookupと入力してください。

root@DD-WRT:~# type nslookup
nslookup is /usr/bin/nslookup

grepにパイプし、ファイルにパイプします。

root@DD-WRT:/opt# nslookup myDomain.asuscomm.com | grep Address > test.txt
nslookup: can't resolve '(null)'
root@DD-WRT:/opt# cat test.txt
Address 1: 7W.10X.7Y.6Z c-7W-10X-7Y-6Z.hsd1.fl.comcast.net

探す

root@DD-WRT:/opt/test# nslookup myFQDN.asuscomm.com

Name:      mydomain.asuscomm.com
Address 1: 7x.10x.7.x6x c-7x-10x-7x-6x.hsd1.fl.comcast.net

nslookup Yahoo

root@DD-WRT:/opt# nslookup yahoo.com

nslookup: can't resolve '(null)'

Name:      yahoo.com
Address 1: 2001:4998:c:1023::5 media-router-fp2.prod1.media.vip.gq1.yahoo.com
Address 2: 2001:4998:58:1836::10 media-router-fp1.prod1.media.vip.bf1.yahoo.com
Address 3: 2001:4998:58:1836::11 media-router-fp2.prod1.media.vip.bf1.yahoo.com
Address 4: 2001:4998:c:1023::4 media-router-fp1.prod1.media.vip.gq1.yahoo.com
Address 5: 2001:4998:44:41d::3 media-router-fp1.prod1.media.vip.ne1.yahoo.com
Address 6: 2001:4998:44:41d::4 media-router-fp2.prod1.media.vip.ne1.yahoo.com
Address 7: 72.30.35.9 media-router-fp1.prod1.media.vip.bf1.yahoo.com
Address 8: 98.137.246.7 media-router-fp1.prod1.media.vip.gq1.yahoo.com
Address 9: 98.138.219.231 media-router-fp1.prod1.media.vip.ne1.yahoo.com
Address 10: 98.138.219.232 media-router-fp2.prod1.media.vip.ne1.yahoo.com
Address 11: 72.30.35.10 media-router-fp2.prod1.media.vip.bf1.yahoo.com
Address 12: 98.137.246.8 media-router-fp2.prod1.media.vip.gq1.yahoo.com

グレブ:

root@DD-WRT:/# nslookup yahoo.com | grep gq1


nslookup: can't resolve '(null)'
Address 1: 2001:4998:c:1023::4 media-router-fp1.prod1.media.vip.gq1.yahoo.com
Address 6: 2001:4998:c:1023::5 media-router-fp2.prod1.media.vip.gq1.yahoo.com
Address 7: 98.137.246.8 media-router-fp2.prod1.media.vip.gq1.yahoo.com
Address 8: 98.137.246.7 media-router-fp1.prod1.media.vip.gq1.yahoo.com

グレブ:

root@DD-WRT:/opt# nslookup yahoo.com | grep -o -E '([0-9][0-9]?[0-9]?\.?){4}$'

nslookup: can't resolve '(null)'

grep3:

root@DD-WRT:/opt# nslookup mydomain.asuscomm.com | grep -o -E '([0-9][^:][0-9]?[0-9]?\.?){4}' > output.txt
nslookup: can't resolve '(null)'
root@DD-WRT:/opt# cat output.txt
7W.10X.7Y.6Z
W-10X-7Y-6Z.

答え1

これは働きます:

nslookup "$D" 2>/dev/null  | grep "Address " | sed 's/.*: //g;s/ .*//g'

しかし、参考にしてください

  • 複数の住所を返すことができるので、繰り返し見てください。
  • 必要でない場合は、ipv6をgrepします。
  • 多くのドメイン名は、各クエリに対して異なるコンテンツを解決します(たとえば、Amazonはランダムにcloudfront、fastly、または他のIPを使用します)。

関連情報