인터넷 연결 드롭 알림 소프트웨어는 무엇입니까? 스위치 /

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핑이 실패하면 다운 타임을 계산하고 , 그렇지 않으면 $downTime0으로 재설정 하고 다시 계산 $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그러한 같은 오디오 파일을 재생 .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


답변