有時候會需要檢測範圍性的主機是否有在線上,所以寫了一隻簡易的 Ping Server 的 bash script
Pingip.sh
#!/bin/bash # Program: # Use Ping command to check NETWORK's Server state. # # Copyright (c) 2015 Scott liao SCRIPT=${0##*/} NETWORK="192.168.50" IP_START="$1" IP_END="$2" # --- start SCRIPT --- trap 'stop' SIGUSR1 SIGINT SIGHUP SIGQUIT SIGTERM SIGSTOP stop() { echo -e "\nStop ${SCRIPT} script ...." exit 0 } help() { echo -e " Usage: $SCRIPT [IP_START] [IP_END] Example: $SCRIPT 1 254 $SCRIPT 100 200 " } if [[ ! -z ${IP_START} && ! -z ${IP_END} ]]; then echo -e "\nStart ${SCRIPT} Scanner Server ...." for opt in $(seq ${IP_START} ${IP_END}) do ping -c 1 -W 1 ${NETWORK}.${opt} &> /dev/null && result=0 || result=1 if [ "${result}" == 0 ]; then echo "Server ${NETWORK}.${opt} is UP." else echo "Server ${NETWORK}.${opt} is DOWN." fi done else help fi
script 中加入了 trap 來讓 script 執行中可以 Ctrl + C 取消執行,如果沒有加入 trap 就會持續執行到 script 結束
在環境變數中,你必須指定 network 來代表你的網段
使用方式:指定你要的範圍 IP 10 ~ 100
$ ./Pingip.sh 10 100 Start Pingip.sh Scanner Server .... Server 192.168.0.10 is UP. Server 192.168.0.11 is UP. Server 192.168.0.12 is UP. ... ... Server 192.168.0.10 is DOWN.