Recent Posts
Recent Comments
04-19 13:53
관리 메뉴

동글동글 라이프

perl을 사용한 자신의 IP 주소 얻기 본문

개발자 이야기/Perl

perl을 사용한 자신의 IP 주소 얻기

동글동글라이프 2009. 2. 8. 23:49

 

작업을 하다보면 자신의 IP를 참고 해야 할 부분이 생긴다.

perl을 사용하여 자신의 공인IP 또는 사설IP를 얻는 방법은 다양한데

이를 정리해 보았다.


- 사설 IP

perl을 사용하여 사설 IP를 얻기 위해서는 일반적으로 두가지 방법이 있다.

첫번째로 ifconfig 명령(리눅스 운영체제)의 결과값을 정규표현식으로 파싱하는 방법이다. (Luz님 코드)


원본코드 : http://perlkr.codepad.org/hkhQi5Zi


JEEN님께 솔깃한 정보를 얻었는데...

그럴듯한 그림 하나정도는 있어야 올블로그에서 간지나게 출력 준다고 하여... 낚아봤...

간만에 backtrack3... 흠흠...( 전체적으로 vi 색이 이쁜 듯)



이와같이 리눅스는 인터페이스를 옵션으로 설정할 수 있지만



윈도우는 ipconfig 명령으로 인터페이스를 설정할 수 없으므로

네트워크 인터페이스가 여러개라면 파싱하기가 까다로울 것이다.

ipconfig 명령 이외에 netsh interface dump 명령으로 사설 ip 주소를 파싱해도 좋다.


두번째 방법으로 Perl 모듈을 사용하는 방법이다.

Net::Address::IP::Local

A class for discovering the local system's IP address 
Net-Address-IP-Local-0.1.2 - 14 Jan 2009 - Julian Mehnle 



이 모듈을 사용하면 손쉽게 사설IP를 얻을 수 있다.

1
2
use Net::Address::IP::Local;
my $address = Net::Address::IP::Local->public;



- 공인 IP

NAT환경이고 public으로 나가는 IP의 주소를 알고 싶을 때 가장 좋은 방법은

REMOTE_ADDRESS를 찍어주는 사이트에서 결과를 파싱하는 방법이 가장 좋다.

리눅스 환경에서는 lynx 명령을 사용하여 사이트를 덤프한뒤 정규식으로 처리한다. (뽀빠이님 코드)


1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl

my $external_ip = `lynx -dump "http://checkip.dyndns.org"`;

$external_ip =~ s/\r//g;
$external_ip =~ s/\n//g;
$external_ip =~ s/
//g;
$external_ip =~ s/   Current IP Address: //;

print("$external_ip\n");

윈도우에는 lynx명령이 존재하지 않으므로,

LWP::Simple 모듈을 사용하여 처리한다.


1
2
use LWP::Simple;
print get('http://www.whatismyip.org/');


위의 사이트는 IP를 정규식으로 추출할 필요가 없어 사이트라 매우 편리했다.



- REMOTE_ADDRESS 정리

Simple한 Site (파싱이 필요없음)

http://checkip.dyndns.org/ 

http://www.whatismyip.org/

볼꺼리가 있는 Site

http://www.whatismyip.com/ 

http://www.mywanip.com/ 

IP를 통해 접속 위치를 알려주는 Site (대략적인 위치만 나오는 듯)

http://whatismyipaddress.com/ 

Remote port 및 Browser를 알려주는 Site

http://ipchicken.com/




... 패킷을 덤프하여 헤더부분을 까는 방법은 패스 -_-;





- 참고 Site

http://keir.net/ip2.html (자신의 IP를 알려주는 프로그램)

http://search.cpan.org/~jmehnle/Net-Address-IP-Local-0.1.2/lib/Net/Address/IP/Local.pm (CPAN 모듈)





'개발자 이야기 > Perl' 카테고리의 다른 글

Perl 다이어리??  (1) 2009.02.26
Perl Study 카페 생성  (11) 2009.02.19
Morse (모스 부호)  (9) 2009.01.29
Perl로 짠 IRC Bot  (1) 2009.01.13
역 해시 (Reverse Hash)  (4) 2009.01.11
Comments