Znalazłem następujące polecenie, aby uzyskać bieżący publiczny adres IP, który działa dobrze z wiersza polecenia:
nslookup myip.opendns.com resolver1.opendns.com
Chcę być w stanie uruchomić polecenie, które po prostu drukuje resulant IP. (W tej chwili pokazuje określony serwer DNS i jego adres IP oraz wszystkie inne informacje IE:
Server: resolver1.opendns.com
Address: 208.67.222.222
Non-authoritative answer:
Name: myip.opendns.com
Address: 123.123.123.123
Chcę, aby po prostu wyprowadzał: 123.123.123.123
Nie jestem pewien, czy jest to flaga wiersza polecenia, aby uzyskać to, czego chcę, czy też mogę użyć sztuczek z wiersza polecenia, aby uzyskać tylko pożądane dane wyjściowe (ostatecznie chcę przekierować dane wyjściowe do pliku „> filename.txt”
networking
command-line
dns
command-line-arguments
BondUniverse
źródło
źródło
Odpowiedzi:
Nslookup z rekordowym adresem IP jako jedynym wyjściem
Zakładając, że używasz systemu Windows, można to zrobić za pomocą prostego polecenia w jednym wierszu.
Z wiersza poleceń:
Z pliku wsadowego:
Uwagi:
ip.txt
).PowerShell
,.Net
lubawk
.Dalsza lektura
źródło
nslookup
tak naprawdę nigdy nie był przeznaczony do użytku skryptowego. Naprawdę chcesz użyćdig
zamiast tego, który z tą+short
opcją tworzy dane wyjściowe do odczytu maszynowego zgodnie z parametrami zapytania.źródło
dig
.awk
i / lubsed
ponieważ orurowanie jest często problematyczne, a w tym przypadku niepotrzebnie skomplikowane.dig +short www.getready.cz | tail -1
Jest to dobry przypadek użycia dla awk.
nslookup myip.opendns.com resolver1.opendns.com | awk -F': ' 'NR==6 { print $2 } '
Tutaj przesyłamy strumieniowo do awk, rozdzielając znakiem „:”, a następnie wyprowadzając tylko drugie rozdzielone pole linii 6.
źródło
awk
w systemie Windows.nslookup-ip() { nslookup "$@" | tail -n +3 | sed -n 's/Address:\s*//p' }
Jeśli korzystasz z systemu Windows i masz zainstalowany program PowerShell (w wersji 1 lub nowszej) (i wersję .Net), możesz użyć (długiej) jednej linii:
[System.Net.Dns]::GetHostAddresses("www.google.com")[0] | Select IPAddressToString -ExpandProperty IPAddressToString | Out-File c:\folder\filename.txt
Spowoduje to wyszukanie www.google.com i umieszczenie pierwszego zwróconego adresu IPv4 w pliku.
Jeśli używasz programu PowerShell v3 + w systemie Windows 8+ (lub Server 2012+), możesz użyć polecenia
Resolve-DnsName
cmdlet zamiast wywołania .Net GetHostAddress. to znaczy:(Resolve-DnsName www.google.com)[0] | Select IPAddressToString -ExpandProperty IPAddressToString | Out-File c:\folder\filename.txt
Po prostu zmień www.google.com na preferowaną nazwę domeny. Lub umieść go w skrypcie PowerShell i skonfiguruj tak, aby akceptował argument (nazwy domeny, którą chcesz wyszukać).
Więcej informacji na ten temat: jak przekazać argument do skryptu PowerShell?
źródło
Działa dobrze na moim komputerze z systemem Linux. Nigdy nie próbowałem tego na innych systemach, ale Google ma wiele artykułów na temat instalacji,
dig
na przykład w systemie WindowsJedyne, na co należy zwrócić uwagę, należy wyraźnie dodać domenę wyszukiwania lokalnych nazw hostów. Więc jeśli masz
myhost
hosta w sieci lokalnej zmynetwork
umieszczoną domeną wyszukiwaniaw wierszu poleceń.
Przykłady:
źródło
Jeśli Twoim celem jest odzyskanie twojego zewnętrznego adresu IP za pomocą skryptu , możliwe byłoby użycie bardzo prostej funkcji PowerShell:
Uruchomienie tej funkcji zwróci twój zewnętrzny adres IP i żadne inne bezużyteczne informacje.
Źródło i przykłady: http://jfrmilner.wordpress.com/2012/12/22/powershell-quick-tip-03-whats-my-external-ip-address-windows-command-line/
Alternatywnie, jeśli chcesz uzyskać rozdzielczość IP dla innych hostów , powinieneś rzucić okiem na cmdlet Resolve-DnsName . Niestety, aby korzystać z tego polecenia cmdlet, na komputerze musi być zainstalowany system Windows 8.1 lub Windows Server 2012 R2. Oto przykład, który właśnie wykonałem:
Mam nadzieję że to pomoże !
źródło
Prosty.
W nslookup użyj:
Ustaw typ = A
Następnie wyszukaj. Polecenie set wyświetli tylko dane wyjściowe dla rekordów A. Możesz użyć tego dla MX, CNAME, AAA itp.
źródło
Nie jest to idealne, ale czasami używam tej metody:
ping -c 1 myip.opendns.com | grep -ohE "\(([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)\)" | head -1 | sed "s/[()]//g"
źródło
grep
i zainstalowali na swoich komputerach z systemem Windows.Korzystając z PowerShell, możesz uruchomić poniżej:
źródło