나는 Traceroute 명령을 사용하여 WAN 링크를 모니터링하는 데 도움이 되는 스크립트를 준비하고 있습니다.
- 추적 경로에서 기본 WAN IP를 수집하고, 발견되면 기본 노드가 작동 중임을 알리는 스크립트입니다.
- 기본 IP를 찾을 수 없으면 추적 경로에서 보조 IP를 grep하고 기본은 아래로, 보조는 UP을 에코합니다.
- 두 IP 모두 찾을 수 없으면 echo PRimary와 보조가 모두 닫힙니다.
비슷한 것을 준비했는데 제대로 작동하지 못했습니다.
echo "`traceroute 4.4.4.4>/tmp/trace.txt`"
grep “1.1.1.1” /tmp/trace.txt &> /dev/null
if [ $? -eq 0 ] ; then
echo “Primary Is UP“
else
grep “2.2.2.2” /tmp/trace.txt &> /dev/null
if [ $? -eq 0 ] ; then
echo “ Primary failed, Secondary Running”
else
echo "Primary & Secondary both failed"
fi
fi
답변1
빠른 테스트를 위해 필요하지 않은 경우 Traceroute를 사용하지 마십시오. 레코드 경로(-R) 옵션을 사용하여 핑을 시도해보세요. 요청을 하나만 만들려면 -c 옵션을 사용하고, 라우팅 호스트 이름을 확인하지 않으려면 -n 옵션을 사용하고, 실패할 때까지 너무 오래 기다리지 않으려면 -W 옵션을 사용하세요. 어쩌면 다음과 같은 것일 수도 있습니다.
if ping -R -n -c1 -W2 4.4.4.4 >/tmp/trace.txt
then
#echo something is up
if grep -q '\<1\.1\.1\.1\>' /tmp/trace.txt
then
echo Primary Is UP
elif grep -q '\<2\.2\.2\.2\>' /tmp/trace.txt
then
echo Primary failed, Secondary Running
else
echo "Primary & Secondary both failed, but something else Running"
fi
else
echo "Primary & Secondary both failed"
fi
기록 경로를 준수하도록 하나 이상의 라우터를 설득해야 할 수도 있습니다.
답변2
echo
스크립트의 첫 번째 줄에서 따옴표를 제거 하고 명령을 그대로 유지하세요 traceroute
. 스크립트는 다음과 같이 작성되어야 합니다.
traceroute ....
grep .....
...