获取本机所有IP和设备的绑定情况

清华大佬耗费三个月吐血整理的几百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);
}