Bon*_*rse 20 networking dns command-line command-line-arguments
我发现以下命令可以从命令行获取当前运行良好的公共 IP:
nslookup myip.opendns.com resolver1.opendns.com
Run Code Online (Sandbox Code Playgroud)
我希望能够运行一个命令,尽管它只打印结果 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
Run Code Online (Sandbox Code Playgroud)
我希望它只输出:123.123.123.123
不确定这是否是一个命令行标志来获得我想要的东西,或者我是否可以使用一些命令行技巧来获得我想要的输出(最终,我想将输出重定向到一个文件,> filename.txt”
小智 38
nslookup
从来没有真正打算用于脚本使用。您确实想dig
改用它,它与该+short
选项一起根据查询参数生成机器可读的输出。
dig +short myip.opendns.com @resolver1.opendns.com
Run Code Online (Sandbox Code Playgroud)
这是 awk 的一个很好的用例。
nslookup myip.opendns.com resolver1.opendns.com | awk -F': ' 'NR==6 { print $2 } '
这里我们通过管道传输到 awk,以“:”分隔,然后只输出第 6 行的第二个分隔字段。
假设您使用的是 Windows,这可以使用一个简单的单行命令来完成。
从命令行:
for /f "skip=4 usebackq tokens=2" %a in (`nslookup myip.opendns.com resolver1.opendns.com`) do echo %a > ip.txt
Run Code Online (Sandbox Code Playgroud)
从批处理文件:
for /f "skip=4 usebackq tokens=2" %%a in (`nslookup myip.opendns.com resolver1.opendns.com`) do echo %%a > ip.txt
Run Code Online (Sandbox Code Playgroud)
笔记:
ip.txt
) 中。PowerShell
,.Net
或awk
.如果您使用的是 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+(或 Server 2012+)上使用 PowerShell v3+,您可以使用 cmdletResolve-DnsName
而不是 .Net GetHostAddress 调用。IE:
(Resolve-DnsName www.google.com)[0] | Select IPAddressToString -ExpandProperty IPAddressToString | Out-File c:\folder\filename.txt
只需将 www.google.com 更改为您首选的域名即可。或者将其放入 PowerShell 脚本中并将其设置为接受参数(您要查找的域名的参数)。
更多信息:How to pass an argument to a PowerShell script?
归档时间: |
|
查看次数: |
64400 次 |
最近记录: |