이더넷 케이블이 연결되어 있는지 프로그래밍 방식으로 확인하는 방법은 무엇입니까?

이더넷 케이블이 연결되어 있는지 프로그래밍 방식으로 확인하는 방법은 무엇입니까?

우리 모두 알고 있듯이 Windows에서는 네트워크 케이블을 연결하면 네트워크 기호가 다른 상태로 변경됩니다.

Linux에서 명령 프롬프트를 통해 케이블이 연결되어 있는지 확인하는 방법은 무엇입니까?

답변1

내가 본 주요 두 가지 방법은 using ethtool또는 manual parsing 입니다 /sys.

이더넷 도구

예를 들어, 인터페이스가 있는 경우 "링크 감지됨" 줄을 eth0사용하여 쿼리한 ethtool다음 구문 분석할 수 있습니다.

$ sudo ethtool eth0
Settings for eth0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
    Advertised auto-negotiation: Yes
    Speed: 100Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    Supports Wake-on: pumbag
    Wake-on: g
    Current message level: 0x00000001 (1)
    Link detected: yes

구체적으로 다음 명령은 다음과 같습니다.

$ ethtool eth0 | grep "Link"
Link detected: yes

아래로 내려가면 '아니요'라고 표시됩니다.

/sys 사용

다시 관심이 있다고 가정하면 eth0수동으로 구문 분석할 수 있습니다./sys/class/net/그런 다음 eth0귀하의 장치에 대해. 이 디렉토리에는 링크가 활성화되었는지 여부를 알려주는 2개의 파일이 있습니다 carrier.operstate

전선이 연결되면 두 파일은 다음과 같습니다.

$ cat /sys/class/net/eth0/{carrier,operstate}
1
up

회선 연결이 끊어지면 두 파일이 다음과 같이 나타납니다.

$ cat /sys/class/net/eth0/{carrier,operstate}
0
down

인용하다

답변2

사용정보산업부 도구(매뉴얼 페이지):

# mii-tool em1
em1: negotiated 100baseTx-FD flow-control, link ok

게다가나미클리네트워크 관리자에서:

$ nmcli -f capabilities.carrier-detect,capabilities.speed device show em1
CAPABILITIES.CARRIER-DETECT:            yes
CAPABILITIES.SPEED:                     100 Mb/s

* device다음과 같이 단축될 수 있습니다.d

관련 정보