네트워크 상태(온라인/오프라인)를 가져오고 이를 쉘 스크립트의 변수에 지정하는 방법은 무엇입니까?

네트워크 상태(온라인/오프라인)를 가져오고 이를 쉘 스크립트의 변수에 지정하는 방법은 무엇입니까?

네트워크 상태(온라인/오프라인)를 가져오고 이를 쉘 스크립트의 변수에 지정하는 방법은 무엇입니까?

답변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(그러나 인터넷 연결은 언급되지 않습니다).

인터넷에 연결되어 있는지 정말로 알고 싶다면 원격 서버(예: google.com)에 ping을 실행하여 작동하는지 확인하세요.

답변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

관련 정보