Có một lệnh mà tôi có thể tìm thấy IP bên ngoài của bộ định tuyến hoặc Bộ định tuyến NAT \ DSL của mình, v.v., loại bỏ nhu cầu truy cập whatsmyip.net hoặc tương tự.
Có một lệnh mà tôi có thể tìm thấy IP bên ngoài của bộ định tuyến hoặc Bộ định tuyến NAT \ DSL của mình, v.v., loại bỏ nhu cầu truy cập whatsmyip.net hoặc tương tự.
Câu trả lời:
Không có lệnh tích hợp để làm điều này. Một phần của vấn đề là khi bạn được kết nối với internet thông qua bộ định tuyến, phần cứng mạng của bạn không được kết nối trực tiếp với internet, do đó hệ thống của bạn không được gán IP cụ thể. Có thể bạn thậm chí có thể có nhiều IP bên ngoài trong một số trường hợp nếu bạn đứng sau một proxy ngược, vì nhiều mạng công ty được thiết lập. Đặt cược tốt nhất của bạn có thể là tạo một tập lệnh truy vấn whatismyip.org hoặc cố gắng tìm nếu nó đã tồn tại.
(Như một mẹo, whatismyip.org thích hợp hơn hầu hết các giải pháp khác, vì nó chỉ trả về IP của bạn dưới dạng văn bản thuần túy - không có văn bản thừa, liên kết, hình ảnh hoặc rác khác. Nó sẽ dễ sử dụng hơn trong một tập lệnh tùy chỉnh so với hầu hết các trang web phát hiện IP khác.)
Bạn có thể sử dụng yêu cầu DNS thay vì yêu cầu HTTP để tìm ra IP công khai của mình:
C:\> nslookup myip.opendns.com. resolver1.opendns.com
Nó sử dụng resolver1.opendns.com
máy chủ dns để phân giải myip.opendns.com.
tên máy chủ ma thuật đến địa chỉ IP của bạn . (Lưu ý: việc theo dõi .
trên tra cứu sẽ ngăn các miền tìm kiếm được thêm vào, điều này có thể mang lại kết quả không chính xác.)
Phiên bản Unix:
$ dig +short myip.opendns.com @resolver1.opendns.com
lấy bản sao của riêng bạn curl
từ http://curl.haxx.se/doad.html và sau đó chỉ
curl "http://myexternalip.com/raw"
hoặc sử dụng powershell:
$wc = new-object System.Net.WebClient
$wc.DownloadString("http://myexternalip.com/raw")
(từ chối trách nhiệm: http://myexternalip.com được tạo bởi tôi)
Điều này hoạt động độc đáo, tôi sử dụng nó chủ yếu với psexec khi kiểm tra các kết nối máy tính của khách hàng.
nslookup myip.opendns.com resolver1.opendns.com
Tạo một tệp có tên ip.vbs
và sao chép sau đây vào nó:
Option Explicit
Dim http : Set http = CreateObject( "MSXML2.ServerXmlHttp" )
http.Open "GET", "http://icanhazip.com", False
http.Send
Wscript.Echo http.responseText 'or do whatever you want with it
Set http = Nothing
Thực thi bằng
C:\>cscript ip.vbs
Như đã lưu ý , tốt nhất là chọn một trang web chỉ trả về IP và không phải quảng cáo HTML +, v.v. như:
(nguồn: trước đây là http://externip.com/about )
Tôi đã tạo tập lệnh bó này để làm điều đó một vài tháng trước:
@echo off
:: WhatIsMyIP.cmd - returns public IP address
:: requires: wget.exe
if [%1]==[-h] goto :HELP
if [%1]==[--help] goto :HELP
if [%1]==[/?] goto :HELP
wget -q -O %temp%\MyIP http://www.whatismyip.com/automation/n09230945.asp
for /f "delims= " %%G in (%temp%\myip) do set PublicIP=%%G & del %temp%\MyIP
echo. & echo Your public IP address is %PublicIP% & echo.
if [%1]==[--clip] echo %PublicIP% | clip
goto :EOF
:HELP
echo. & echo Usage: whatismyip [--clip] & echo.
goto :EOF
:EOF
Nó cung cấp cho bạn tùy chọn để đặt địa chỉ IP vào bảng tạm và nó đặt biến môi trường - %PublicIP%
.
PHƯƠNG PHÁP SIMPLER:
Bây giờ, tôi chỉ làm điều này thay thế:
curl icanhazip.com
hoặc là...
curl icanhazip.com | clip
... Để lấy địa chỉ IP công cộng hiện tại vào bảng tạm.
Bạn cần cURL .
Với Powershell 3.0 (mặc định của Windows 7 là 2.0), bạn có thể sử dụng Invoke-WebRequest
Đối với IPv4:
$tmp =Invoke-WebRequest -URI http://myip.dnsomatic.com/
$tmp.Content
Đối với IPv6:
$tmp =Invoke-WebRequest -URI http://myexternalip.com/raw
$tmp.Content
Điều này sẽ cung cấp cho bạn một biến để làm việc nếu bạn có một cái gì đó cụ thể mà bạn muốn làm với nó. Tôi thực sự đang sử dụng điều này để xây dựng tập lệnh để tải lên IP động của bộ định tuyến của mình theo định kỳ, có một giao tiếp kiểm tra máy khác với nó theo định kỳ và sau đó cập nhật DNS với IP mới nhất nếu nó đã thay đổi để tôi có thể truy cập thiết bị của mình từ bất cứ đâu bằng cách sử dụng tên thay vì phải liên tục đuổi theo IP.
Và tất nhiên - khi các trang web thay đổi hoặc đầu ra của chúng thay đổi, bạn sẽ muốn cập nhật điều này cho phù hợp. :)
powershell.exe -noprofile -command ""
. Phân tách ngắt dòng bằng dấu chấm phẩy ...
(Invoke-WebRequest -URI http://myip.dnsomatic.com).Content
Hãy thử điều này:
Không cần bất kỳ loại phần mềm bên ngoài nào được cài đặt.
@set @script=0 /*
@echo off
set @script=
cscript //nologo //e:jscript "%~dpnx0"
exit /b
*/
with (new ActiveXObject('Microsoft.XMLHTTP')) {
open('GET', 'http://internet.yandex.ru/', false);
send();
WScript.echo(responseText.match(/IPv4:\s(\d+\.){3}\d+/g));
}
Không có chương trình của bên thứ ba khó với Windows vì Telnet không được cung cấp theo mặc định, nhưng, nếu có (XP) hoặc bật (Windows Vista trở lên), chỉ cần gõ:
telnet curlmyip.com 80
màn hình sẽ nhấp nháy và bạn sẽ chỉ nhận được một con trỏ ... Loại tiếp theo:
GET
Trong chữ in hoa ... sau đó bạn sẽ thấy các tiêu đề, theo sau là ip của bạn (và xin lỗi tôi đã làm mờ nó, chỉ hiển thị vị trí của nó!):
Các câu trả lời khác ở đây rõ ràng có tác dụng, nhưng, tôi đang cố gắng giữ câu hỏi về thứ gì đó có thể được sử dụng trên bất kỳ cửa sổ nào, mà không có chương trình của bên thứ ba!
Đối với Windows Vista trở lên, bạn có thể cài đặt telnet dễ dàng (và an toàn) thông qua Programs and features
hoặc sử dụng lệnh sau:
pkgmgr /iu:”TelnetClient”
curlmyip.com
, nhưng thử nghiệm làm việc với checkip.dyndns.org
.
Tôi muốn có một giải pháp hoạt động cho Windows mà không cần cài đặt các công cụ của bên thứ ba. Vì vậy, tôi đã chọn tùy chọn powershell , sẽ chạy một kịch bản mỗi giờ.
Bạn tạo tập lệnh này bằng Notepad
$wc = new-object System.Net.WebClient
$ip = $wc.DownloadString("http://myexternalip.com/raw")
$LogTime = Get-Date -Format "MM-dd-yyyy_hh-mm-ss"
Add-Content C:\Users\Administrator\Desktop\logs\IPLog.txt $LogTime
Add-Content C:\Users\Administrator\Desktop\logs\IPLog.txt "`n"
Add-Content C:\Users\Administrator\Desktop\logs\IPLog.txt $ip
Add-Content C:\Users\Administrator\Desktop\logs\IPLog.txt "`n"
và lưu nó như getIP.ps1
một nơi nào đó. Bạn có thể gọi kịch bản này trực tiếp trong powershell hoặc sử dụng trình hoạch định tác vụ như tôi đã làm. Đây là lệnh để thực thi:
powershell -executionpolicy bypass -File C:\Users\Administrator\Desktop\getIP.ps1
Trong lịch trình tác vụ bạn tạo ra một nhiệm vụ mới. Tại Kích hoạt, bạn sử dụng cài đặt hàng ngày cho mỗi 1 ngày và trong tùy chọn nâng cao, bạn chọn mỗi giờ trong thời gian ngay lập tức . Đồng thời kiểm tra tác vụ Run càng sớm càng tốt sau khi bắt đầu theo lịch trình bị bỏ lỡ trong Cài đặt . Trong phần Hành động, bạn dán mã thực thi ở trên.
Mã powershell có thể được tối ưu hóa, bởi vì tôi không có guru powershell (lần đầu tiên tôi sử dụng nó). Bây giờ tôi đang kiểm tra nếu tập lệnh được gọi mỗi giờ.
Đây là những gì tôi đã tìm ra, có thể sử dụng lệnh dựng sẵn để lấy địa chỉ IP công cộng nhưng bạn có quyền truy cập vào internet
telnet icanhazip.com
hoặc là
telnet myip.gelma.net
icanhazip.com
tôi sẽ không làm việc cho tôi và người khác không làm IPv6 đúng cách. :)
ipchicken.com sẽ trả về địa chỉ IP rõ ràng của bạn ở định dạng văn bản nếu bạn có thể phân tích cú pháp HTML trả về mà bạn trích xuất IP bên ngoài của bộ định tuyến. Thay phiên, bạn có thể cài đặt một trong những tác nhân DNS động cập nhật IP bên ngoài rõ ràng của bạn thành FQDN và sau đó chỉ cần nslookup trên FQDN của bạn để xem số IP hiện tại của bạn. Đã từng có những cái miễn phí như DynDNS nhưng hầu hết chúng hiện nay đều yêu cầu tài khoản đăng ký trả phí.