perl 獲取主機名和 IP
阿新 • • 發佈:2019-02-09
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;