2011-05-19 63 views
-1

這裏有3個樣品IP地址上運行腳本:Perl的 - 決定是否基於IP地址的第三個八位

192.168.1.2

192.168.2.2

192.168.3.2

我希望這個腳本只在ip地址的第三個八位是3時運行。如果客戶端的ip地址的第三個八進制不是3,那麼我希望腳本中止。

+0

這裏有IP地址,這將是三個例子允許運行腳本:192.168.3.2,192.168.3.3和192.168.3.4 – 2011-05-19 17:30:07

回答

2
if ($addr =~ /^\d+\.\d+\.3\.\d+$/) { 

    # do your stuff 

} 
3

我假設你正在談論Perl CGI腳本。如果是這樣,從http://www.perlfect.com/articles/cgi_env.shtml

REMOTE_ADDR

的IP地址從客戶端發出請求。

這可能是有用無論是記錄訪問的腳本( 例如投票腳本可能想通過自己的IP文件 日誌選民 爲了防止他們投票不止一次 )或阻止/行爲 對於特定的IP 地址有所不同。 (這可能是在具有被限制 到本地網絡腳本的要求 ,也許 每個已知 主機執行不同的任務)

所以,你應該能夠解析%ENV {」 REMOTE_ADDR'}並相應地調整你的執行。

+0

我正在運行windows .. – 2011-05-19 17:53:47

0
use NetAddr::IP; 
if (my $addr = NetAddr::IP->new($src) and $addr->within(NetAddr::IP->new('192.168.3.0/24')) { 
    .... 
} 

當然,這一操作將是微不足道的改變對IPv6的支持,擴大允許的主機的子網,對證多個子網等