대량의 머신에 대한 ping 업데이트를 확인하세요.

대량의 머신에 대한 ping 업데이트를 확인하세요.

매 시간마다 가용성을 확인하기 위해 cron이 필요한 대량의 머신이 있습니다. 나는 4-5개의 이름 시리즈와 각 노드의 번호로 나누어진 거의 1000개의 머신을 얻었습니다. ab1000에서 ab1200, bs3000에서 bs3892, zx7800에서 zx8900 등을 예로 들 수 있습니다. 현재 저는 이 노드에서 모니터링할 소프트웨어를 유지할 수 없기 때문에 간단한 ping 스크립트를 사용하고 있습니다(승인이 없습니다). 그래서 내 코드에서는 모든 컴퓨터 이름을 하나씩 업데이트하는 파일을 호출하고(컴퓨터 이름이 매우 자주 발생하기 때문에 매일 이 작업을 수행해야 합니다) 정규식을 사용하여 컴퓨터를 그대로 언급할 수 있는지 궁금합니다. 내 삶이 많이 편해질 거예요. 예를 들면 다음과 같습니다: ab1*,zx[7-8]* 등. 입력 파일에서 동일한 것을 사용하려고 시도했지만 별로 도움이 되지 않았습니다. 또한 이것에 대한 또 다른 문제는 때때로 한두 대의 컴퓨터가 영구적으로 다운되어 매번 계산할 필요가 없다는 것입니다. 그래서 내 경고 목록에서 제외된 상태로 유지해야 합니다.

또한 3/300 sx가 시스템 이름 sz7701,7702,7703으로 다운되었으므로 목록을 제공하는 경고와 같이 경고를 더욱 강력하게 만들 수 있는 다른 것이 있으면 알려주십시오.

cat /tmp/node.txt

zx7800
zx7801
zx7802
.....
....
zx8900
bs3000
bs3001

cat nodecheck.sh

for node in `cat /tmp/node.txt`
do
 count=0
 count=$(ping -c 3 $node | grep "100%packet loss"|wc -l)
 if [ $count -ne 0 ]
 then
  echo "$node" >> /tmp/nodedown.txt
 fi
done

답변1

모니터링하려는 이름 목록이 필요합니다. 이 목록을 수동으로 유지 관리하거나 다른 사람이 실행해야 하는 컴퓨터 목록을 유지 관리하는 곳에서 목록을 추출합니다.

몇 가지 사항을 단순화할 수 있습니다. 명령 은 ping이미 종료 상태를 반환하므로 이를 사용할 수 있습니다. 또한 각 에코에 대해 리디렉션이 필요하지 않으며 루프당 한 번이면 충분합니다. 이는 파일이 초기화되고 마지막 실행의 행을 포함하지 않는다는 추가 이점이 있습니다.

for node in $(cat /tmp/node.txt); do
  if ! ping -c 3 $node &> /dev/null; then
    echo "$node"
  fi
done > /tmp/nodedown.txt

통계를 원할 경우 통계를 계산하거나 wc두 파일의 줄 수를 계산하는 데 사용할 수 있습니다.

echo "$(wc -l < /tmp/nodedown.txt) / $(wc -l < /tmp/node.txt)"

답변2

대안:

  • fpingping과 비슷하지만 여러 호스트에 ping을 보내기 위해 명시적으로 설계되었습니다.
  • 무슨 일이야기계가 작동 중이거나 작동 중지되는 것을 모니터링하도록 설계된 유틸리티입니다.

관련 정보