2010-11-23 4 views
2

IP 카메라 (Busybox)에서 실행되는 매우 기본적인 Linux 서버가 있습니다. 라우터 뒤에있는 카메라의 공개 IP를 얻고 싶습니다. 그냥 ... "살아"또는 "하지 살아가"netcat을 사용하여 공용 IP 얻기

단 하나의 가능한 기본 "netcat을"있는 응답 아니 "wget을"이나 "경로 추적"및 "핑 (ping)"가 없습니다 :

nc 
BusyBox v1.1.3 (2009.12.07-16:16+0000) multi-call binary 
Usage: nc [OPTIONS] [IP] [port] 
Netcat opens a pipe to IP:port 
Options: 
     -l    listen mode, for inbound connects 
     -p PORT   local port number 
     -i SECS   delay interval for lines sent 
     -w SECS   timeout for connects and final net reads 
     -4    Use IPv4 (default) 
     -6    Use IPv6 
     -D DSCP   set IP DSCP field 
     -P PRIO   set VLAN user-priority 

내 ISP에서 나가는 HTTP를 허용한다면 www.obtainip.com 같은 사이트에서 공용 IP 응답을 받으려면 netcat을 사용할 수 있습니까?

대단한 감사의 마음을 전합니다. 그것은 또한 작동 ...

echo "GET /automation/n09230945.asp HTTP/1.0" > http_req2.txt 
echo "Host: www.whatismyip.com" >> http_req2.txt 
echo "" >> http_req2.txt 
echo "" >> http_req2.txt 
IP2=$(cat http_req2.txt | nc www.whatismyip.com 80 | tail -n 1) 
echo $IP2 
YEAH ! 

더 이상 :하지만 여기

는이 작업 방법입니다

echo "GET/HTTP/1.0" > http_request.txt 
echo "Host: www.whatismyip.com" >> http_request.txt 
echo "User-Agent: netcat" >> http_request.txt 
echo "Referer: http://www.whatismyip.com/" >> http_request.txt 
echo "" >> http_request.txt 
echo "" >> http_request.txt 
IP=$(cat http_request.txt | nc www.whatismyipaddress.com 80 | tail -n 1) 
echo $IP 
YEAH again! 

EDIT 물론 이 더 나은 제안처럼 스크립팅 할 수 있습니다

echo -e "GET /automation/n09230945.asp HTTP/1.0\n"Host: www.whatismyip.com\n\n" | nc www.whatismyipaddress.com 80 | tail -n 1 
+0

wget 또는 curl을 설치 하시겠습니까? 아니면 ... ...? –

+0

윙윙 거리다 나는 wget을 설치할 수 없거나 그렇지 않으면 나는 그것을하는 것을 좋아했을 것이다. – hornetbzz

답변

3

GET /automation/n09230945.asp HTTP/1.0 
Host: www.whatismyip.com 

바닥이 빈 줄 바꿈 (이 편집기는 늘 그들에게 보여)

다음 실행이 있는지 확인

이 내용에 넣고 '스크립트'라는 파일을 생성

cat script | nc www.whatismyip.com 80 | tail -1 

귀하의 IP가 있습니다.당신이 시도 할 수 있습니다 당신은 IP 주소, 당신이 당신의 상자에

+0

많은 방법이 방법은 곧바로 상자에서 작동합니다 :-) – hornetbzz

+0

이것은 나를 위해 작동하지 않습니다. 적절한 내용 (하단에 빈 줄 두 개 포함)이있는'script' 파일을 만들었습니다. 하지만'고양이 스크립트 | nc www.whatismyip.com 80 | 꼬리 -1'은 아무것도 인쇄하지 않습니다. 내가'cat script | nc www.whatismyip.com 80', 그것은 여전히 ​​아무것도 인쇄하지 않습니다. – solvingPuzzles

+1

whatismyip의 자동화가 다운되었으므로 대신 다음을 사용하십시오 :'nc icanhazip.com 80','GET /'. – fotinakis

2

명령

cat httpreq.txt | nc www.whatismyip.com 80 

httpreq.txt (적어도 두 개의 빈 줄을 사용하여 파일을 종료해야합니다)

GET/HTTP/1.0 
Host: www.whatismyip.com 
User-Agent: netcat 
Referer: http://www.whatismyip.com/ 


<<don't forget your blank lines above here>> 

: TCAT는 작업 통조림 HTTP 요청을 보내 ... 그러나 당신은 여전히 ​​HTTP 응답을 구문 분석 할 수있는 메커니즘이 필요합니다.

HTML로 구문 분석하지 않아도되는 꾸밈없는 IP 주소 만 반환하는 "내 IP 무엇입니까?"웹 서비스를 찾을 수있는 경우에도 HTTP 응답 헤더를 구문 분석해야합니다.

일부 구문 분석을 수행 할 수있는 기능이 있습니까? 세게 때리다? 뭐라구? awk?

편집 : superfro found a plain-text "내 IP 주소는 무엇입니까?"서비스이며 HTTP 응답 헤더를 구문 분석하기 쉬운 방법입니다.

+0

예 tail, sed 및 grep을 사용할 수 있지만 awk는 없습니다. 텔넷을 사용하여 스크립팅을 수행 할 수도 있습니다. 놀라운 나는 그대로 똑바로를 사용하여 오류 (500)를 얻을 수 있지만, 난 그냥 같이, www.whatismyipaddress.com에 NC와 httpreq.text를 유지, 공공 IP를 얻을 같이 고양이 http_request.txt GET/HTTP/1.0 호스트 : www.whatismyip.com 사용자 에이전트 : netcat Referer : http://www.whatismyip.com/ IP = $ (cat http_request.txt | nc www.whatismyipaddress.com 80 | tail - n 1) – hornetbzz

+0

슈퍼 플로의 해결책을 살펴보십시오. 꼬리가 있으니. :-) –

+0

좀더 일반적인 것처럼 보일 것 같아서이 "GET /automation/n09230945.asp"가 사라지는 것을 두려워합니다. – hornetbzz

0

을 나오지 않은 경우 호들갑을 반환합니다

IP=`cat script | nc www.whatismyip.com 80 | tail -1` 
echo $IP 

이 같은 변수에 넣을 수 있습니다

echo -e "GET /automation/n09230945.asp HTTP/1.1\r\nHost: www.whatismyip.com\r\n" | nc -w1 www.whatismyip.com 80 | sed -ne '$p' 
+0

IP = $ (echo -e "GET /automation/n09230945.asp HTTP/1.1 \ r \ nHost : www.whatismyip.com \ r \ n"| nc -w1 www.whatismyip.com 80 | tail -1) – Soenke

+0

내가 차라리 sed에 익숙해. – hornetbzz

1
(echo GET /; echo) |nc www.whatismyipaddress.com 80 | grep -o "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" 
3

whatismyip.com의 자동화가 중단되었으므로 대체 방법은 다음과 같습니다.

$ echo GET/| nc icanhazip.com 80 

... 귀하의 IP를 출력합니다.

+0

차가움. 이것은 한 줄짜리가 될 수 있습니다.'echo GET/| nc icanhazip.com 80' – avalanchy

+0

단지 curl을 사용하도록 업데이트되었습니다. – fotinakis

+0

질문은 curl이 아닌 ** netcat **을 사용하여 외부 IP를 얻는 방법입니다. – avalanchy