Network Interface의 상태를 확인해야 하는데요..

hyper9의 이미지
6530
points
0
points

예를 들면 eth0가 현재 UP인지 DOWN인지를 인식해서
UP되었을 경우에 자동으로 packet을 보내는 일종의
script를 만들려고 합니다.

어떻게 eth0 또는 eth1등의 UP/DOWN상태를 알 수 있을까요?
/proc/아래를 읽어서 확인할 수 있는 방법이 있을까요?
아님 특정한 API를 사용해서 간단하게라도 Program을 짜는게
좋을까요?

비슷한 경험을 하신 분의 조언을 부탁드립니다 ~
감사합니당 ^^

feanor의 이미지
9529
points

ethtool

0
points

# ethtool eth0 | grep 'Link detected'
처럼 하시면 될 것 같습니다.

음..

1
point

1. 그냥 socket 에 write 해보고, fail 이거나 timeout 이면 down 으로 간주..

2. ioctl 의 SIOCGIFFLAGS 를 사용해서, (ifr.ifr_flags & IFF_UP) 인지 확인하는 방법..
(lan unplugged 의 경우에는 디텍트 못하는 듯..)

3. ioctl 의 SIOCETHTOOL 을 사용해서, data 가 available 한지 확인하는 방법..
struct ethtool_value 의 cmd 에는 ETHTOOL_GLINK 를 넣고..
해당 구조체를 ifr.ifr_data 에 넣은 후에, ioctl 을 call 하면, 해당 구조체의 data 에..
link status 가 들어옵니다..
(up/down, plugged/unplugged 모두 탐지되나 구별은 안 됨)

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

댓글 보기 옵션

원하시는 댓글 전시 방법을 선택한 다음 "설정 저장"을 누르셔서 적용하십시오.