首页 > 解决方案 > 如何使用 perl 脚本在具有链接/以太网的变量中获取以太网适配器名称?

问题描述

使用 perl 脚本,当我们执行“ip/addr”时,我想找到具有特定字符串“link/ether”的以太网适配器的名称。我想将它们存储在一个变量中。喜欢:-

3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 00:21:28:d6:1f:f9 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 00:21:28:d6:1f:fa brd ff:ff:ff:ff:ff:ff
5: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 00:21:28:d6:1f:fb brd ff:ff:ff:ff:ff:ff
6: ab0:  <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/band 00:21:28:d6:1f:fb brd ff:ff:ff:ff:ff:ff

从上面应该输出以下内容: -

eth1
eth2
eth3

就像存储在变量中并在循环中运行一样。这是我正在尝试但无法正常工作的方法:-

my $last="";
my @results = `ip addr`;
my $adap="";
my $flag=0;
foreach my $line (@results)
{
if (($line =~ /ether/))
{
   $adap = substr($last,3,7);
   chomp($adap);
   $str = $adap;
   $flag=1;
}
}
print $adap;

标签: perl

解决方案


它可以像下面这样工作,只需将输出存储在@array 中:-

ip -o addr show | grep "ether"  | awk -F': ' '{print $2}'

推荐阅读