Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linux系统上使用正确的以太网接口_Linux_Bash - Fatal编程技术网

在Linux系统上使用正确的以太网接口

在Linux系统上使用正确的以太网接口,linux,bash,Linux,Bash,大多数系统如笔记本电脑都有两个接口。。。我需要系统正在使用的主设备(假设只有一个),例如eth0 wlan0或RHEL7试图执行的任何操作 我最擅长的是: #!/bin/bash # -- Get me the interface for the main ip on system for each in $(ls -1 /sys/class/net) ;do result=$(ip addr show $each | awk '$1 == "inet" {gsub(/\/.*$/

大多数系统如笔记本电脑都有两个接口。。。我需要系统正在使用的主设备(假设只有一个),例如eth0 wlan0或RHEL7试图执行的任何操作

我最擅长的是:

#!/bin/bash
# -- Get me the interface for the main ip on system

for each in $(ls -1 /sys/class/net) ;do 

    result=$(ip addr show $each | awk '$1 == "inet" {gsub(/\/.*$/, "", $2); print $2}' | grep "$(hostname -I | cut -d' ' -f1)")

    if [ ! -z "${result// }" ] && [ -d /sys/class/net/${each// } ] ;then
            echo "Device: $each IP: $result"
            break;
    fi

done
样本输出:

    ./maineth.sh  
    Device: enp0s25 IP: 192.168.1.6

此方法假设hostname-I首先提供主ip,这可能足够了,如果其他人回答,我将给予奖励:

  $ nmcli dev status | grep -i "wired" | awk '{print $1}' | head -1
  enp0s25

  $ nmcli dev status | grep -i "wifi" | awk '{print $1}' | head -1
  wlp3s0

这可能就足够了,如果其他人回答,我将给予表扬:

  $ nmcli dev status | grep -i "wired" | awk '{print $1}' | head -1
  enp0s25

  $ nmcli dev status | grep -i "wifi" | awk '{print $1}' | head -1
  wlp3s0

和一个稍微简单一点的老年退休金计划:

 ip a | awk 'BEGIN{ "hostname -I|cut -d\" \" -f 1" | getline ip} $2 ~ ip {print "Device: "$NF "  IP: "$2}'

和一个稍微简单一点的老年退休金计划:

 ip a | awk 'BEGIN{ "hostname -I|cut -d\" \" -f 1" | getline ip} $2 ~ ip {print "Device: "$NF "  IP: "$2}'
还有一种方法:

ip addr show | grep "state UP"
下面是一个小脚本,它将显示统计信息,以便您可以验证哪个最活跃:

#!/bin/bash
for i in $(ip link | grep "state UP" | awk '{ print $2 }') ; do
  ip -s link show ${i/:}
done
exit
还有一种方法:

ip addr show | grep "state UP"
下面是一个小脚本,它将显示统计信息,以便您可以验证哪个最活跃:

#!/bin/bash
for i in $(ip link | grep "state UP" | awk '{ print $2 }') ; do
  ip -s link show ${i/:}
done
exit

也许这个ip-o链接显示| awk{print$2,$9}'Mike,你在评论中所做的给了我一个所有接口及其状态的列表,这不是你在脚本中所做的?也许这个ip-o链接显示| awk{print$2,$9}'Mike,你在评论中所做的给了我一个所有接口及其状态的列表,这不是脚本中要做的?注意:网络管理器不是所有发行版的标准配置(可能小于1/2)注意:网络管理器不是所有发行版的标准配置(可能小于1/2)如果您有多个活动端口,并且只需要主端口,则可以使用head-1,如果您有多个活动端口,并且只需要主端口shown@MikeQ:非常好:)。。。这就是我们来这里的目的,对吗?:}@米凯克:很好:)。。。这就是我们来这里的目的,对吗?:}