systemd 스크립트의 네트워크 상태 모니터링

systemd 스크립트의 네트워크 상태 모니터링

systemd1시간마다 대역폭 사용량을 기록하는 서비스 스크립트를 작성 중입니다 . 네트워크가 다운되면,무엇네트워크가 다운되어 스크립트가 일시적으로 중지된다는 사실을 이 스크립트에 알려야 합니다. 마찬가지로 네트워크가 다시 작동되면그것네트워크가 작동 중이라고 알려야 합니다.

Ubuntu 15.10에서 bash를 사용하여 스크립트를 작성하고 있습니다.

해결책을 제안하기 전에 서버에 핑을 보내는 것과 같은 해결 방법이 필요하지 않다는 점을 알아두시기 바랍니다.

답변1

최선의 방법은 Network Manager에서 이미 사용 가능한 이벤트 기반 상태를 사용하는 것입니다.

  1. NetStatus.x다음 위치에 파일을 만듭니다 /etc.

    sudo nano /etc/NetStatus.up
    
  2. 다음 텍스트를 추가합니다.

    이것은 NetStatus 파일입니다. 이름의 확장자가 "up"이면 네트워크 상태가 작동 중임을 의미하고 "down" 확장자는 작동 중지를 의미합니다. (윽!)

  3. /etc/NetworkManager/dispatcher.d/01ifupdown아래의 굵은 글씨를 편집 하고 추가하세요.

    case "$2" in
        up|vpn-up)
            export MODE="start"
            export PHASE="post-up"
            exec run-parts /etc/network/if-up.d
            mv /etc/NetStatus.down /etc/NetStatus.up
            ;;
        down|vpn-down)
            export MODE="stop"
            export PHASE="post-down"
            exec run-parts /etc/network/if-post-down.d
            mv /etc/NetStatus.up /etc/NetStatus.down
            ;;
    
  4. /etc/NetStatus.up다음 코드 조각을 통해 실제로 데이터 수집을 시작하기 전에 존재 여부를 확인하도록 자체 수집 스크립트를 수정하세요 .

    if [ -e /etc/NetStatus.up ] ; then
      #move your existing collection in here
    fi
    

왜?

이름 바꾸기는 플로피 기반 시스템을 포함한 모든 OS에서 상태를 변경하는 가장 빠른 방법이며 사용이 매우 쉽습니다. 나는 위의 시스템을 사용하여 낮은 수준의 MS-DOS 기반 시스템부터 슈퍼 컴퓨터까지 서버 상태, 백업 상태, 계산 상태를 확인했습니다.

관련 정보