清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
#!/usr/bin/perl
use strict;
use warnings;
#首先,文件通过参数传入
my $arg_len = @ARGV;
my @lines;
if($arg_len == 1) {
my $p_file_path = $ARGV[0];
open(PROC_FILE,$p_file_path) || die("open $p_file_path error $?");
@lines = <PROC_FILE>;
} elsif($arg_len == 0) {
@lines = <STDIN>;
}
my $dev_name;
my $inet_addr;
my %dev_ip_map;
for(@lines)
{
chomp($_);
#首先判断起始字符串
if(m/^\w+/) {
#表明是设备文件
$dev_name = $_;
$dev_name=~s/\s+.*//i;
} else {
#取出IP地址
if(m/inet /) {
$inet_addr = $_;
$inet_addr=~s/^\s+//i;
$inet_addr=~s/inet /ipv4/i;
my @kv_str_arr = split(' ',$inet_addr);
for(@kv_str_arr) {
if(m/ipv4/) {
my @kv_arr = split(':',$_);
#将dev name和ipv4地址绑定在一起
$dev_ip_map{$dev_name} = $kv_arr[1];
}
}
}
}
}
while((my $k,my $v) = each %dev_ip_map) {
print "$k $v\n";
}
if($arg_len == 1) {
close(PROC_FILE);
}