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
....
시작하는 한 ping
15초마다 명령을 확인하는 것 외에는 아무 일도 일어나지 않습니다.
"연결이 끊긴" 예
이제 "연결 닫힘" 상태를 시뮬레이션하기 위해 핑하는 호스트 이름을 가짜 호스트 이름으로 바꾸겠습니다 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
...
지금까지의 시간은 $downTime
15초와 같습니다. 조금 더 기다리면 다음과 같은 결과가 나타납니다.
+ '[' 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