다수의 시스템에서 ping 업데이트 확인

다수의 시스템에서 ping 업데이트 확인

나는 많은 수의 컴퓨터를 가지고 있고 매 시간마다 가용성을 확인해야 합니다. 나는 1000대에 가까운 컴퓨터를 가지고 있으며 4-5개의 이름 시리즈와 각 노드의 번호로 나뉩니다. 예를 들어 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

대안:

  • 평평한ping과 유사하지만 여러 호스트에 ping을 보내기 위해 특별히 설계되었습니다.
  • 어떻게 되어가나요?기계의 작동 또는 종료를 모니터링하도록 설계된 유틸리티입니다.

관련 정보