어떤 패킷 제어 네트워크 인터페이스가 발견됩니까?

어떤 패킷 제어 네트워크 인터페이스가 발견됩니까?

부팅 시 실행되는 데비안 패키지가 있습니다.

저는 upstart를 사용하고 있는데 필요한 것 같아요종속성 추가시작 구성으로:

start on someProgram

어떤 프로그램인지는 모르겠지만 사용하지 않고 network-manager비활성화되어 있습니다. 나는 다음과 같은 일을하고 있습니다 :

ethernet=$(ifconfig -a | grep Ethernet | grep ^e | cut -d' ' -f1)
wifi=$(ifconfig -a | grep wl | cut -d' ' -f1)
ping -I $ethernet -c 1 8.8.8.8 \
  || ping -I $wifi -c 1 8.8.8.8 \
  || echo "not online"

문제는 프로그램이 시작 프로세스에서 너무 일찍 시작되기 때문에 인터페이스가 ifconfig항상 표시되지 않는다는 것입니다.$wifi

ping -I $ethernet -c 1 8.8.8.8성공했어야 했는데 실패했습니다.

sleep 30이렇게 하면 아주 ping잘 작동합니다.

예상대로 작동하려면 어떤 패키지를 기다려야 하는지 아는 사람이 있나요?

임베디드 장치에서 Ubuntu 14.04를 사용하고 있습니다.

3.0.36+ #16 SMP PREEMPT Tue Oct 31 19:17:57 EDT 2017 armv7l armv7l armv7l GNU/Linux

나는 이미 답을 알고 있다고 생각했습니다.

패키지 대신 네트워크 인터페이스를 직접 참조할 수 있다는 것을 발견했습니다.

start on (local-filesystems and net-device-up IFACE!=lo)

나는 여전히 내 상황에 맞게 조금 개선하고 싶습니다.

왜냐하면 나는 eth보다 wlan을 기다리는 것을 선호하지만 다음과 같은 와일드카드를 사용할 수 있는지 확실하지 않기 때문입니다.IFACE=wlan*

하지만 이는 인터페이스를 사용할 수 있을 때까지 기다리는 것이 아니라 ifconfig인터페이스가 인터넷에 연결될 때까지 기다리는 것 같습니다.

답변1

마침내 upstart 사전 출시 스크립트를 사용하여 해결 방법을 찾았습니다.

pre-start script
    while [ -z "$(ifconfig | grep wlan)" ]
    do
        sleep 1
    done
    sleep 5
end script

관련 정보