1. 程式人生 > >perl 獲取主機名和 IP

perl 獲取主機名和 IP

Automation中常常會用到主機名和 IP 地址。

笨方法是 $cmd="hostname"; $cmd_1="ipconfig", 再從輸出結果匹配想要的資訊。程式碼如下:


my $cmd="hostname";
my $output=`$cmd`;
print $output;

my $cmd_1="ipconfig";
my $output_1=`$cmd_1`;
my $line;
my $ip="";
my @array=split(/\n/,$output_1);
foreach $line (@array) 
{
	if ($line =~ m/IPv4 Address+(\.\s)+: (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/) 	
	{					#\d{a,b}: 匹配數字,最少為a位,最多為b位
		$ip=$2;
		last;
	}
}
print $ip;

#IPv4 Address. . . . . . . . . . . : 9.123.140.226


其實perl中有相關的函式。

------$host = hostname

------| $name = gethostbyname($host)

         | inet_ntoa( $name)

注意:需要開頭宣告 USE Socket 和 Sys::Hostname。


#!/usr/bin/perl
use strict;
use warnings;
use Socket;
use Sys::Hostname;

my $host=hostname;

print "Host name: ".$host."\n";

my $name=gethostbyname($host);

my $ip= inet_ntoa($name);

print $ip."\n";

my $remoteHost= gethostbyname("xxx.com");
my $remoteIp= inet_ntoa($remoteHost);
print $remoteIp;