コマンドラインから適切に機能する現在のパブリック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"にリダイレクトします
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.txt
)に格納されます。PowerShell
、.Net
、awk
などの非標準のWindowsコマンドを必要としません。nslookup
は、スクリプトでの使用を意図したものではありませんでした。代わりに、実際にはDig
を使用する必要があります。これは、+short
オプションを使用すると、クエリパラメータに従ってマシンが読み取り可能な出力を生成します。
Dig +short myip.opendns.com @resolver1.opendns.com
これはawkの良いユースケースです。
nslookup myip.opendns.com resolver1.opendns.com | awk -F': ' 'NR==6 { print $2 } '
ここでは、「:」で区切ってawkにパイプし、6行目の2番目の区切られたフィールドのみを出力しています。
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スクリプトに入れて、(検索するドメイン名の)引数を受け入れるように設定します。
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
目的がスクリプトで外部IPを取得する場合、非常に単純なPowerShell関数を使用することが考えられます。
function Get-ExternalIP {
(Invoke-WebRequest ifconfig.me/ip).Content
}
この関数を実行すると、外部IPが返され、他の役に立たない情報は返されません。
あるいは、他のホストのIP解決を取得できるようにしたい場合、Resolve-DnsNameコマンドレット。残念ながら、このコマンドレットを使用するには、コンピューターでWindows 8.1またはWindows Server 2012 R2が実行されている必要があります。これが私がちょうど実行した例です:
お役に立てれば !
シンプル。
Nslookupでの使用:
Type = Aに設定
次にルックアップします。 setコマンドは、Aレコードの出力のみを表示します。 MX、CNAME、AAAなどに使用できます。