본문 바로가기
언어/perl script

perl ip address 찾기

by darkdevilness 2015. 12. 10.
728x90


my $string = "eth0      Link encap:Ethernet  HWaddr 00:50:56:BA:5F:C5
          inet addr:10.100.34.50  Bcast:10.100.34.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:feba:5fc5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24294735 errors:0 dropped:0 overruns:0 frame:0
          TX packets:32056482 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4906042607 (4.5 GiB)  TX bytes:44095919253 (41.0 GiB)

eth1      Link encap:Ethernet  HWaddr 00:50:56:B2:7C:5F
          inet addr:213.27.146.100  Bcast:213.27.146.103  Mask:255.255.255.248
          inet6 addr: fe80::250:56ff:feb2:7c5f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:32079070 errors:0 dropped:0 overruns:0 frame:0
          TX packets:20186439 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:40939257892 (38.1 GiB)  TX bytes:2674652910 (2.4 GiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:24518 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24518 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1319723 (1.2 MiB)  TX bytes:1319723 (1.2 MiB)";

for my $line (split /\n/, $string){
if ( $line =~ m/(eth.*)\s+Link encap/){ print "$1\n"; }
elsif ($line =~ m/inet addr:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s*Bcast.*Mask:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/) { print "-$1- -$2-\n";}
}


out:

eth0    
-10.100.34.50- -255.255.255.0-
eth1    
-213.27.146.100- -255.255.255.248-

 

정리

my @string = $RemoteTelnetObj->cmd('ifconfig');
print @string;print "\n";

my $string;
foreach my $elem ( 0..$#string) { $string=$string.$string[$elem]; }

 for my $line (split /\n/, $string){
    if ( $line =~ m/(eth.*)\s+Link encap/){ print "$1\n"; }
    elsif ( $line =~ m/(lo.*)\s+Link encap/){ print "$1\n"; }
    elsif ($line =~ m/inet addr:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s*Bcast.*Mask:(\d{1,3}\.\    d{1,3}\.\d{1,3}\.\d{1,3})/) { print "-$1- -$2-\n";}
    elsif ($line =~ m/inet addr:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s*.*Mask:(\d{1,3}\.\d{1,3    }\.\d{1,3}\.\d{1,3})/) { print "-$1- -$2-\n";}
 }

728x90

'언어 > perl script' 카테고리의 다른 글

Perl cpan Win32::SerialPort 인스톨  (2) 2016.04.29
perl excel 파일 만들고 차트 생성하기  (0) 2016.01.28
telnet_iperf  (0) 2015.12.08
perl 변수 입력 ARGV  (1) 2015.11.28
perl 문자, 문자열  (0) 2015.11.28