如何获取网络状态(在线/离线)并将其归因于 shell 脚本中的变量?

如何获取网络状态(在线/离线)并将其归因于 shell 脚本中的变量?

如何获取网络状态(在线/离线)并将其归因于 shell 脚本中的变量?

答案1

我要ip再次推荐:

status=$(ip -o link show eth0 | awk '{print $9}')

(第九列是接口的状态)

答案2

如果您使用网络管理器进行网络连接,您可以通过 dbus 查询它,如下所示:

dbus-send --type=method_call --print-reply --system --dest="org.freedesktop.NetworkManager" "/org/freedesktop/NetworkManager" org.freedesktop.NetworkManager.state

(有些已弃用,但仍然有效,对于较新的接口,您只需查询不同的地址)

如果返回“3”,则您已“连接”,如中所述http://projects.gnome.org/NetworkManager/developers/spec.html#type-NM_STATE(但它没有提到互联网连接)。

如果您确实想知道是否有互联网连接,只需 ping 一个远程服务器(例如 google.com),看看是否有效。

答案3

另一个...对于较旧的 NIC,命令 mii-tool 很棒

答案4

您说您只想要接口的在线/离线状态,而不关心速度或链接类型。

尝试网络工具,作为根:

# ethtool eth0 |grep "Link detected"
  Link detected: yes
# ethtool eth1 |grep "Link detected"
  Link detected: no

ifconfig还可以显示在线/离线状态,并且该命令通常可供系统上的任何用户使用。

$ { /sbin/ifconfig eth0 | grep MTU: | grep -w UP >/dev/null 2>&1 ; }; echo $?
0
# This could return some false errors
$ { /sbin/ifconfig eth1 | grep MTU: | grep -w UP >/dev/null 2>&1 ; }; echo $?
1

相关内容