bash 스크립트를 사용하여 ISP (Internet Service Provider)를 어떻게 찾을 수 있습니까?


21

인터넷 서비스 제공 업체의 이름을 스크립트에 사용하고 싶습니다. 어떻게해야하는지 모르겠습니다.

미리 감사드립니다.

답변:


26

ISP 이름을 찾기 위해 제공된 많은 웹 사이트를 사용할 수 있습니다. 그들 중 하나는 whoismyisp 입니다.

그리고 ISP 이름을 얻으려면 bash 스크립트에서 다음과 같은 방법 으로이 사이트를 얻을 수 있습니다 curl.

curl -s https://www.whoismyisp.org | grep -oP -m1 '(?<=isp">).*(?=</p)'

또한이 명령으로 원하는 IP의 ISP를 찾을 수 있습니다.

curl -s https://www.whoismyisp.org/ip/xxx.xxx.xxx.xxx | grep -oP -m1 '(?<=isp">).*(?=</p)'

그게 전부는 xxx.xxx.xxx.xxxIP 당신은 그것의 ISP를 찾으려는 것이다.


추가 정보 :이 명령을 사용하여 bash로 IP를 찾을 수 있습니다 (스크립트에 도움이 될 수 있음).

dig +short myip.opendns.com @resolver1.opendns.com

2
@TaraSVolpe 난 당신을 도울 수있어서 기쁘다
알리 Razmdideh

2
이 답변은이 웹 사이트의 레이아웃에 의존하지만 ipinfo.io는 잘 정의 된 JSON 형식을 사용합니다. 왜이 답변이 더 많이지지되는지 이해할 수 없습니다.
NieDzejkob

2
@NieDzejkob ipinfo.io/org는 AS 번호 만 제공하고 ISP 이름은 제공하지 않기 때문에
SebMa

1
@SebMa Windows 10 (WSL)의 Ubuntu에서 내 컴퓨터에서 Byte의 답변을 실행하면을 사용하여 AS 번호와 ISP 이름을 반환했습니다 curl ipinfo.io/org.
그럼에도 불구

@NieDzejkob curl ipinfo.io/org은 AS의 전체 이름을 출력하지 않지만 다음을 curl -s ipinfo.io/ASxxx | grep as-name수행합니다. :
SebMa

27

예를 들어 ipinfo.io 의 서비스를 사용 하여 공급자 회사 이름과 같은 추가 정보를 포함하여 공개 IP를 결정할 수 있습니다.

사이트는 일반적으로 브라우저에서 방문 할 수 있지만, 예를 들어 명령 줄에서 사이트를 쿼리하면 curl깨끗하고 잘 정의 된 JSON 형식으로 응답하므로 HTML을 구문 분석 할 필요가 없습니다.

$ 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"
}

하나의 값만 표시하기 위해 해당 경로로 직접 요청을 보낼 수 있습니다. 예를 들어 ISP 이름 ( org)으로 다음을 시도하십시오.

curl ipinfo.io/org

이 답변에서 영감을 얻었습니다 .


2
예, JSON 형식 +1로 인해 ipinfo가 whoismyisp보다 낫습니다
Ali Razmdideh

@AliRazmdideh 정말 당신이 다른 사람의 답변을 찬성하는 매우 장엄한 :)
WinEunuuchs2Unix

@ WinEunuuchs2Unix 고마워, 나는 내 것보다 낫다고 생각한다.
알리 Razmdideh

1

먼저 자율 시스템 번호를 가져옵니다.

$ curl -s ipinfo.io/org
AS2094 Renater

그런 다음 해당 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

1
나를 위해 그것은 작동하지 않습니다. 방금 Windows 10 (WSL)의 Ubuntu와 Kernel 4.14.27을 사용하는 Ubuntu 16.04의 모든 답변을 테스트했습니다. 위의 옵션 1 (바이트의 답변)은을 반환합니다 AS852 TELUS Communications Inc.. 위의 옵션 2는 아무것도 반환하지 않습니다. 허용 된 답변은 Byte의 답변의 제한된 버전이지만 여전히 좋은 것을 사용 curl -s https://www.whoismyisp.org | grep -oP '\bisp">\K[^<]+'하고 반환합니다 Telus Communications. 이것은 YMMV (마일리지가 다를 수 있음) 답변 중 하나입니다 .
WinEunuuchs2Unix

2
분명히 그것은 공급자 또는 ipinfo.org데이터 수집 에 무엇이 있는지에 달려 있습니다. 나를 위해 curl -s ipinfo.io/org주는 AS3320 Deutsche Telekom AG동안 curl -s ipinfo.io/AS3320 | grep as-name제공 DTAG(잠시 후). 또한 후자는 다시 HTML 출력을 구문 분석합니다 (오류가 발생하기 쉽습니다). ByteCommander의 답변을 고수하겠습니다.
PerlDuck

@PerlDuck 독일을 사용할 때 AS3320얻는 것과 같은 DTAG결과를 얻습니다. 그러나 캐나다를 사용 curl -s ipinfo.io/AS852 | grep as-name하면 나처럼 null 출력을 얻는 지 궁금합니다 .
WinEunuuchs2Unix

@ WinEunuuchs2Unix 예, 저도 마찬가지입니다. 출력이 없습니다. reckon curl -s ipinfo.io/org은 요청하는 IP를 curl -s ipinfo.io/AS3320기반으로 데이터 를 반환 하는 반면 주어진 매개 변수를 기반으로 데이터 를 반환합니다 (요청의 IP는 무시). 어쨌든. 적절한 파서없이 HTML을 파싱하는 것은 거의 항상 나쁜 생각입니다. 당신이 알아 유명한 대답스택 오버플로를 ? 읽는 것이 재미있다.
PerlDuck

@PerlDuck 끝 부분에있는 모든 이상한 문자를 읽는 것이 재미 있습니다. 바람에주의를 기울여 bash에서 HTML 코드를 구문 분석했습니다 : askubuntu.com/questions/900319/…
WinEunuuchs2Unix
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.