인터페이스 eth0이 작동하는지 확인 (구성)


30

eth0구성 여부를 스크립트로 확인해야 합니다. 그렇다면 스크립트는 아무것도하지 않습니다. 그렇지 않으면 시작 wlan0됩니다. (둘 다 원하지 않는 eth0wlan0동시에 최대로).

eth0이미 켜져 있는지 여부를 확인하는 가장 쉬운 방법은 무엇입니까 ?

데비안 Wheezy를 사용하고 있습니다

설명:

케이블 eth0이 꽂혀있을뿐만 아니라 인터페이스가 구성되어 있는지 (즉, 고정 IP가 설정되었거나 DHCP IP를 수신했는지) 확인하고 싶습니다 . 케이블이 연결되어 있지만 eth0올바르게 구성되지 않은 경우 시작하고 싶습니다wlan0


2
내가 무슨 말을할지 모르겠지만 쉽게 cat /sys/class/net/ | grep eth0파싱 ​​가능한 데이터를 제공해야합니다. 당신은 또한 할 수 있습니다sudo ethtool eth0 | grep Link
Kiwy

답변:


45

여러 가지 방법으로 할 수 있습니다. 예를 들면 다음과 같습니다.

$ cat /sys/class/net/eth0/operstate
up

5
불행히도 인터페이스가 완전히 구성되었다고 보장 할 수는 없습니다. cat /sys/class/net/eth0/carrier을 사용하여 신호를 확인할 수 있지만 아직 DHCP 임대가 없을 수 있습니다.
orodbhen

7
ip a show ethX up

아무것도 표시되지 않으면 인터페이스가 다운 된 것입니다


이 방법 : "ip ethX up"및 출력 확인이 충분하지 않습니다.
Joshua Clayton

5
ip a | grep -Eq ': eth0:.*state UP' || _do_your_thing 

그래서 여기서 우리 grep는 관심있는 인터페이스와 "상태 UP" 이라는 문구를 모두 포함하는 라인을위한 유비쿼터스 ipstdout을 사용합니다 (@Lekensteyn 덕분에 좀 더 특이성이 필요하다는 점을 지적했습니다 ). 우리는이 인수 를 축약 형으로 사용 하며 이는 시스템에 구성된 모든 네트워크 카드 목록을 얻기에 충분해야합니다.UPaaddress

사용의 한 가지 장점은 ip실제로 어디에서나 사용할 수 있다는 것입니다.

:colons부분 일치를 방지하는 데 사용됩니다 -이 방법으로 우리의 일치 보장 eth0다르게 가능한 반대로 someothereth0또는 eth007.

정확성으로 나를 안내하고 솔루션을 설명하는 @RaphaelAhrens에게 감사드립니다.

편집하다:

현재 요구 사항을 처리하려면 다음을 수행하십시오.

ip a | sed -rn '/: '"$if"':.*state UP/{N;N;s/.*inet (\S*).*/\1/p}'

위는 대상 $if이 작동 중이고 연결되어 있고 하나 가있는 경우 CIDR IP 주소 만 인쇄합니다 . ipv6의 경우 솔루션은 약간만 수정하면 간단합니다.

마음에 들지 않으면 sed다른 것과 비슷한 결과를 얻을 수 있고 첫 번째에 컨텍스트 옵션을 |pipe ... grep추가 할 -A수는 grep있지만 좋아 sed합니다.


1
무엇을하고 있는지 설명해야합니다. 모든 사람이 귀하의 답변을 활용할 수 있습니다.
Raphael Ahrens

5
이것으로 충분하지 않습니다. UP장치가 켜져 있지만 케이블이 연결되어 있지 않은 경우 에도 출력에 포함 됩니다 2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000. 오 탐지를 피하기 위해 장치를 지정할 수도 있습니다 ip addr show dev eth0.
Lekensteyn

0

다른 방법은 작동하지 않지만이 방법은 적어도 우분투에서는 작동합니다.

while true; do
    ip route | grep "linkdown"
    if [ $? -eq 0 ]; then
        sleep 1  # network not yet up
    else
        break   # network up
    fi
done

ip route데비안 스트레치 에서 grep 할 "linkdown"은 없습니다 .
Ingo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.