banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành Windows Code for Fun: perl script GetIP  XML
  [Programming]   Code for Fun: perl script GetIP 08/09/2006 21:08:47 (+0700) | #1 | 21759
Mr.Khoai
Moderator

Joined: 27/06/2006 01:55:07
Messages: 954
Offline
[Profile] [PM]
Đây là một đoạn code nho nhỏ sử dụng perl kết hợp với regex để lấy WAN IP của máy. Idea rất đơn giản: lấy file index.html từ whatismyip.com. Sau đó parse ra IP. Khoai dùng wget để lấy html code. Ai không thích có thể tuỳ ý thay thế bằng lynx/links để lấy luôn out-put, sau đó dump ra một file rồi tiến hành parse. Tuy nhiên khi dùng CLI browser thì regex sẽ phải thay đổi.
Code:
#!/usr/bin/perl
# Get IP perl script
# Written By Mr.Khoai
# Sep 7, 2006
# Copyrights--You have the rights to copy
#########################################

# This script uses http://whatismyip.com to determine the real WAN IP.
#+It may not be absolutely corect if user goes throug a proxy server. 
#+This script requires:
#	1. PERL!!! This is perl script. No perl == No run
#	2. A working network. This includes proper configurations of
#+NICs and an internet connection.
#	3. wget. This is a handy tool to download any file on the 
#+line. wget also support ftp,sll, etc. For more information, please
#+refer to GNU wget @ http://www.gnu.org/software/wget

my $tmp="/tmp/__GetIPtmp";							# temp
`wget http://whatismyip.com -q -O $tmp`;					# wget http://www.whatismyip.com/index.html
										# wwwected to $tmp
open($F, $tmp);
while (my $line = <$F>) {							# Get each line
	if ($line =~ /(^<TITLE>.+ )(\d{1,3}\.\d{1,3}\.\d{1,3})(.+<\/TITLE>)/)
#		      |^^^^^^^^^^^||^^^^^^^^^^^^^^^^^^^^^^^^^||^^^^^^^^^^^^|
#		      |		  ||	 		     |+------------=====> End with </TITLE>
#		      |		  |+-------------------------===================> Some thing look like IP
#		      +-----------==============================================> Start with <TITLE>
	{	
		$line=$2;							# Only get the IP Part
		&printStuff($line);
		close ($F);
		`rm $filename`;
		exit (0);
	}
}
print "Opps, cant see your IP. Check all the requirements to see if you meet 'em all!\n";

sub printStuff(){
	my $ip = shift;
	my $msg = "+-------------------------------------+\n";
	$msg   .= "|           GetIP perl script         |\n";
	$msg   .= "|          Written by Mr.Khoai        |\n";
	$msg   .= "+-------------------------------------+\n";
	$msg   .= "\nYour IP is: $ip\n";
	print $msg;
}

Tuy đoạn code chả có gì to bự nhưng cũng giúp ta thấy được regular expression lợi hại thế nào. PerlRegEx dùng để parse text thì khỏi chê.
Bao nhiêu cảm xúc + bức xúc của tuần đầu tiên được đi học lập trình Khoai đã "nhét" vào đây cả.
Mr.Khoai
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|