web-dev-qa-db-ja.com

単一の出力としてAレコードIPを持つNslookupコマンドライン

コマンドラインから適切に機能する現在のパブリックIPを取得する次のコマンドを見つけました。

nslookup myip.opendns.com resolver1.opendns.com

コマンドを実行できるようにしたいのですが、その結果、適切なIPが出力されます。 (現在、指定されたDNSサーバーとIPが他のすべての情報IEと共に表示されています。

Server:  resolver1.opendns.com
Address:  208.67.222.222

Non-authoritative answer:
Name:    myip.opendns.com
Address:  123.123.123.123

出力したいだけです:123.123.123.123

必要なものを取得するためのコマンドラインフラグであるかどうか、またはコマンドライントリックを使用して必要な出力だけを取得できるかどうかがわかりません(最終的には、出力をファイル "> filename.txt"にリダイレクトします

13
BondUniverse

単一の出力としてAレコードIPを持つNslookup

Windowsを使用している場合、これは簡単な1行のコマンドを使用して実行できます。

コマンドラインから:

for /f "skip=4 usebackq tokens=2" %a in (`nslookup myip.opendns.com resolver1.opendns.com`) do echo %a > ip.txt

バッチファイルから:

for /f "skip=4 usebackq tokens=2" %%a in (`nslookup myip.opendns.com resolver1.opendns.com`) do echo %%a > ip.txt

ノート:

  • パブリックIPアドレスはファイル(ip.txt)に格納されます。
  • 上記は、PowerShell.Netawkなどの非標準のWindowsコマンドを必要としません。

参考文献

6
DavidPostill

nslookupは、スクリプトでの使用を意図したものではありませんでした。代わりに、実際にはDigを使用する必要があります。これは、+shortオプションを使用すると、クエリパラメータに従ってマシンが読み取り可能な出力を生成します。

Dig +short myip.opendns.com @resolver1.opendns.com
23
brm

これはawkの良いユースケースです。

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

ここでは、「:」で区切ってawkにパイプし、6行目の2番目の区切られたフィールドのみを出力しています。

8
JNevill

Windowsを使用していて、PowerShellがインストールされている場合(v1以降)(および.Netバージョン)、次のような(長い)ワンライナーを使用できます。

[System.Net.Dns]::GetHostAddresses("www.google.com")[0] | Select IPAddressToString -ExpandProperty IPAddressToString | Out-File c:\folder\filename.txt

これはwww.google.comを検索し、最初に返されたIPv4アドレスをファイルに入れます。

Windows 8以降(またはサーバー2012以降)でPowerShell v3以降を使用している場合は、Resolve-DnsName .Net GetHostAddress呼び出しの代わりにコマンドレット。つまり:

(Resolve-DnsName www.google.com)[0] | Select IPAddressToString -ExpandProperty IPAddressToString | Out-File c:\folder\filename.txt

Www.google.comをご希望のドメイン名に変更するだけです。または、PowerShellスクリプトに入れて、(検索するドメイン名の)引数を受け入れるように設定します。

詳細: PowerShellスクリプトに引数を渡す方法?

4

Linuxマシンでうまく動作します。他のシステムでは試したことはありませんが、GoogleにはDigのインストール方法に関する記事がたくさんあります Windows など

注意すべき唯一のことは、ローカルホスト名の検索ドメインは明示的に追加する必要があることです。したがって、ローカルネットワークにmyhostホストがあり、検索ドメインmynetworkがある場合は、

Dig +short myhost.mynetwork

コマンドラインで。

例:

sergeyi@sergeyi:~$ Dig +short google.ru
173.194.222.94

sergeyi@sergeyi:~$ Dig A +short google.ru
173.194.222.94

sergeyi@sergeyi:~$ Dig AAAA +short google.ru
2a00:1450:4010:c0b::5e
2
Sergey

目的がスクリプトで外部IPを取得する場合、非常に単純なPowerShell関数を使用することが考えられます。

function Get-ExternalIP {
(Invoke-WebRequest ifconfig.me/ip).Content
}

この関数を実行すると、外部IPが返され、他の役に立たない情報は返されません。

ソースと例:http://jfrmilner.wordpress.com/2012/12/22/powershell-quick-tip-03-whats-my-external- ip-address-windows-command-line /

あるいは、他のホストのIP解決を取得できるようにしたい場合Resolve-DnsNameコマンドレット。残念ながら、このコマンドレットを使用するには、コンピューターでWindows 8.1またはWindows Server 2012 R2が実行されている必要があります。これが私がちょうど実行した例です:

enter image description here

お役に立てれば !

0
Ob1lan

シンプル。

Nslookupでの使用:

Type = Aに設定

次にルックアップします。 setコマンドは、Aレコードの出力のみを表示します。 MX、CNAME、AAAなどに使用できます。

0
Proxy