Tôi muốn sử dụng tên của Nhà cung cấp dịch vụ Internet của mình trong một tập lệnh và tôi không biết làm thế nào tôi có thể làm điều này.
Xin hãy giúp tôi, cảm ơn trước.
Tôi muốn sử dụng tên của Nhà cung cấp dịch vụ Internet của mình trong một tập lệnh và tôi không biết làm thế nào tôi có thể làm điều này.
Xin hãy giúp tôi, cảm ơn trước.
Câu trả lời:
Bạn có thể sử dụng nhiều trang web, được cung cấp để tìm tên ISP của bạn. Một trong số đó là whoismyisp .
Và để có được tên ISP của bạn, trong tập lệnh bash, bạn có thể lấy trang web này bằng một cái gì đó như curl
.
curl -s https://www.whoismyisp.org | grep -oP -m1 '(?<=isp">).*(?=</p)'
Ngoài ra, bạn có thể tìm thấy ISP của bất kỳ IP mong muốn nào bằng lệnh này:
curl -s https://www.whoismyisp.org/ip/xxx.xxx.xxx.xxx | grep -oP -m1 '(?<=isp">).*(?=</p)'
Đó xxx.xxx.xxx.xxx
là IP mà bạn muốn tìm ISP của nó.
Thông tin bổ sung : Bạn có thể tìm IP của mình bằng cách bash với lệnh này (điều đó có thể hữu ích cho các tập lệnh):
dig +short myip.opendns.com @resolver1.opendns.com
curl ipinfo.io/org
. Dù sao đi nữa, tôi đã bình chọn cả câu trả lời và câu hỏi vì tất cả đều tốt :)
curl ipinfo.io/org
không xuất ra tên đầy đủ của AS nhưng curl -s ipinfo.io/ASxxx | grep as-name
không :)
Bạn có thể sử dụng ví dụ: các dịch vụ của ipinfo.io để xác định IP công cộng của bạn bao gồm một số thông tin bổ sung như tên công ty của nhà cung cấp.
Trang web có thể được truy cập bình thường trong trình duyệt của bạn, nhưng nếu bạn truy vấn nó từ dòng lệnh với ví dụ curl
, họ trả lời theo định dạng JSON rõ ràng và được xác định rõ ràng để bạn không cần phân tích bất kỳ HTML nào:
$ curl ipinfo.io
{
"ip": "xxx.xxx.xxx.xxx",
"hostname": "xxxxxxxxxxxxxxxxxxxxxxxxxxx.xx",
"city": "xxxxxxxx",
"region": "xxxxxxxxxx",
"country": "xx",
"loc": "xxx.xxxx,xxx.xxxx",
"org": "xxxxxxxxxxxx",
"postal": "xxxxx"
}
Để chỉ hiển thị một giá trị, bạn có thể gửi yêu cầu trực tiếp đến đường dẫn tương ứng. Ví dụ: đối với tên ISP ( org
), hãy thử điều này:
curl ipinfo.io/org
Lấy cảm hứng từ câu trả lời này .
Đầu tiên tôi lấy số Hệ thống tự trị:
$ curl -s ipinfo.io/org
AS2094 Renater
Sau đó, tôi lấy tên đầy đủ của AS đó:
$ curl -s ipinfo.io/$(curl -s ipinfo.io/org | cut -d "" -f1) | awk '/ as-name / {print $ NF}'
$ whois $(curl -s ipinfo.io/org | cut -d" " -f1) | awk -F: 'BEGIN{IGNORECASE=1}/(as-?name|org-?name):/{sub("^ *","",$2);print$2}'
FR-TELECOM-MANAGEMENT-SUDPARIS
Renater
AS852 TELUS Communications Inc.
. Tùy chọn 2 của bạn ở trên không trả về gì cả. Câu trả lời được chấp nhận sử dụng curl -s https://www.whoismyisp.org | grep -oP '\bisp">\K[^<]+'
và trả về Telus Communications
là phiên bản giới hạn của câu trả lời của Byte nhưng vẫn tốt. Đây là một trong những câu trả lời YMMV (Your Mileage May Vary).
ipinfo.org
có trong bộ sưu tập dữ liệu của họ. Đối với tôi curl -s ipinfo.io/org
cho AS3320 Deutsche Telekom AG
trong khi curl -s ipinfo.io/AS3320 | grep as-name
cho DTAG
(sau một thời gian). Ngoài ra, cái sau lại phân tích cú pháp đầu ra HTML (dễ bị lỗi!). Vì vậy, tôi sẽ gắn bó với câu trả lời của ByteCommander.
AS3320
tôi nhận được cùng một DTAG
sản lượng bạn nhận được. Nhưng tôi tự hỏi nếu bạn sử dụng Canada, curl -s ipinfo.io/AS852 | grep as-name
bạn có đầu ra null như tôi.
curl -s ipinfo.io/org
trả về dữ liệu dựa trên IP yêu cầu trong khi curl -s ipinfo.io/AS3320
trả về dữ liệu dựa trên tham số đã cho (bỏ qua IP của yêu cầu). Dù sao. Phân tích cú pháp HTML mà không có trình phân tích cú pháp phù hợp hầu như luôn là một ý tưởng tồi. Bạn có biết câu trả lời nổi tiếng này trên Stack Overflow ? Thật thú vị khi đọc.