인터넷 연결 끊김 알림

인터넷 연결 끊김 알림

5분 동안 인터넷 연결이 없을 때 알람(PC 스피커)을 울릴 수 있는 소프트웨어가 있나요?

내 스위치/라우터가 며칠에 한 번씩 연결이 끊어지는 것 같아서 그런 일이 발생하면 재설정하고 싶습니다.

PC          -- TP-Link switch/router -- FO
192.168.x.1 -- 192.168.x.2 / x.y.z.a -- a.b.c.d

답변1

이 스크립트의 수정된 버전을 사용하여 원하는 작업을 수행할 수 있습니다.

#!/bin/bash

downTime=0
lastAccessTime=$(date +"%s")
while [ true ]; do
if ! ping -c1 google.com >& /dev/null; then
    downTime=$(( $(date +"%s") - $lastAccessTime ))
else
    downTime=0
    lastAccessTime=$(date +"%s")
fi

sleep 15

if [ $downTime -ge 300 ]; then
   echo "alert"
fi
done

"연결된" 예

디버깅을 켜면 스크립트가 수행하는 작업을 확인할 수 있습니다.

set -x

"연결 시작됨" 상태를 보여주기 위해 유효한 호스트 이름으로 실행하세요.

$ ./watcher.bash
+ downTime=0
++ date +%s
+ lastAccessTime=1402276955
+ '[' true ']'

위의 내용은 여러 변수를 초기화하고 마지막으로 루프를 실행한 시간을 결정합니다 $lastAccessTime. 이제 Google에 ping을 시도합니다.

+ ping -c1 google.com
+ downTime=0
++ date +%s
+ lastAccessTime=1402276955

$downTime$downTime핑이 실패하면 이제 가동 중지 시간을 계산하고, 그렇지 않으면 0으로 재설정 하고 다시 계산합니다 $lastAccessTime.

+ sleep 15

이제 15초를 기다립니다.

+ '[' 0 -ge 300 ']'

이제 5분(300초) 이상 다운되었는지 확인합니다. 그런 다음 while루프를 반복적으로 실행합니다 .

+ '[' true ']'
+ ping -c1 google.com
+ downTime=0
++ date +%s
+ lastAccessTime=1402276970
+ sleep 15
....

시작하는 한 ping15초마다 명령을 확인하는 것 외에는 아무 일도 일어나지 않습니다.

"연결이 끊긴" 예

이제 "연결 닫힘" 상태를 시뮬레이션하기 위해 핑하는 호스트 이름을 가짜 호스트 이름으로 바꾸겠습니다 google1234567890.com. 디버깅이 활성화된 상태에서 스크립트를 반복적으로 실행하면 계산된 실제 가동 중지 시간을 볼 수 있습니다.

$ ./watcher.bash
+ downTime=0
++ date +%s
+ lastAccessTime=1402277506
+ '[' true ']'
+ ping -c1 google1234567890.com
++ date +%s
+ downTime=0
+ sleep 15
+ '[' 0 -ge 300 ']'
+ '[' true ']'
+ ping -c1 google1234567890.com
++ date +%s
+ downTime=15
+ sleep 15
...

지금까지의 시간은 $downTime15초와 같습니다. 조금 더 기다리면 다음과 같은 결과가 나타납니다.

+ '[' true ']'
+ ping -c1 google1234567890.com
++ date +%s
+ downTime=300
+ sleep 15

300초의 가동 중지 시간이 누적되었습니다. 이제 확인하면 메시지가 인쇄됩니다 alert.

+ '[' 300 -ge 300 ']'
+ echo alert
alert
+ '[' true ']'
+ ping -c1 google1234567890.com
++ date +%s
+ downTime=315
+ sleep 15

이 상태는 연결이 복원되고 ping다시 성공할 때까지 지속됩니다.

소리는 어떻습니까?

그것은 간단합니다. 이를 위해 다양한 도구를 사용할 수 있습니다. 연결이 끊어지면 sox또는 같은 것을 사용하여 mplayer오디오 파일을 재생합니다. 예를 들어 매 15초마다 듣고 싶은 적절한 사운드가 포함된 .mp3또는 파일을 재생합니다..wav

mplayer someaudio.wav

alert연결이 끊어졌다는 오디오 피드백을 받으려면 위의 메시지를 이 줄로 바꾸세요 .

핑 시간 초과 문제

위에서 설명한 대로 사용 하면 연결이 끊길 때 문자 그대로 10~20초 정도 소요되어 실패하는 ping지연 시간이 발생할 수 있습니다 . ping다음 제목의 U&L Q&A에 대한 내 답변을 참조하세요.명령의 출력을 리디렉션하는 방법은 무엇입니까?예를 들어 명령줄 도구를 사용합니다 fing. 이 도구는 기존 도구보다 더 빨리 실패합니다 ping.

답변2

Linux를 사용하는 경우 다음과 같은 스크립트에서 ping을 사용할 수 있습니다 google.com.

counter=0
while [ true ]
do
ping -c 1 google.com > /dev/null 2>&1
if [ $? -ne 0 ] 
then
    let "counter +=1"
else
    let "counter = 0"
fi
if [ $counter -eq 300 ] # we assume that one ping need one second (300 is 5 minutes)
then
   echo "alert"
fi
done

관련 정보