5 분 동안 인터넷에 연결되어 있지 않을 때 경고 (PC 스피커)를 재생하는 소프트웨어는 무엇입니까?
스위치 / 라우터가 며칠마다 연결이 끊어진 것으로 보이며 스위치가 발생하면 재설정하고 싶습니다.
PC -- TP-Link switch/router -- FO
192.168.x.1 -- 192.168.x.2 / x.y.z.a -- a.b.c.d
답변
이 스크립트의 수정 된 버전을 사용하여 원하는 작업을 수행 할 수 있습니다.
#!/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 -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
그러한 같은 오디오 파일을 재생 .mp3
하거나 .wav
연결이 아래로있는 동안, 당신은 15 초마다 듣고 싶지 적절한 사운드 파일.
mplayer someaudio.wav
alert
연결이 끊겼다는 오디오 피드백을 받으려면 위 의 메시지를이 줄로 바꾸 십시오.
Ping 문제 해결
ping
위와 같은 방식으로 사용 ping
하면 연결이 끊어졌을 때 실패 하는 데 문자 그대로 10-20 초가 걸리는 느린 지연 시간이 발생할 수 있습니다. 이 U & L Q & A에 대한 내 답변 제목 : 명령의 출력을 리디렉션하는 방법은 무엇입니까? fing
대신 명령 행 도구를 사용하는 예제 입니다. 이 도구는 기존보다 더 빨리 실패합니다 ping
.
답변
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