Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

Shell 腳本批量檢測服務器存活狀態(Ping 掃描)

編輯:關於伺服器

核心腳本 check_hosts.sh

#!/bin/bash
# 批量 Ping 掃描檢測主機存活
# 適用:C 類網段(/24)快速巡檢
# 作者:運維團隊 | 版本:1.1

NETWORK_PREFIX="192.168.1"
START=1
END=254
TIMEOUT=2      # 單次 Ping 超時(秒)
COUNT=2        # Ping 包數
LOG_FILE="/var/log/host_scan_$(date +%F).log"

echo "=== 開始掃描 ${NETWORK_PREFIX}.${START}-${END} $(date) ===" | tee -a "$LOG_FILE"

for n in $(seq $START $END); do
    HOST="${NETWORK_PREFIX}.${n}"
    # -c 包數 -W 超時 -q 安靜模式
    if ping -c $COUNT -W $TIMEOUT -q "$HOST" &>/dev/null; then
        STATUS="UP"
    else
        STATUS="DOWN"
    fi
    echo "$(date '+%F %T') $HOST $STATUS" | tee -a "$LOG_FILE"
done

echo "=== 掃描結束 $(date) ===" | tee -a "$LOG_FILE"

# 統計摘要
UP_COUNT=$(grep " UP$" "$LOG_FILE" | tail -n +2 | wc -l)
DOWN_COUNT=$(grep " DOWN$" "$LOG_FILE" | tail -n +2 | wc -l)
echo "存活: $UP_COUNT  不可達: $DOWN_COUNT" | tee -a "$LOG_FILE"

進階優化版:並發 + fping

原版串行 Ping,254 台約需 10 分鐘。生產環境推薦 fping(EPEL 源可裝)或 GNU Parallel 並發:

# 安裝 fping
yum install -y epel-release && yum install -y fping

# 一條命令完成全網段並發掃描(默認 256 並發)
fping -a -g 192.168.1.0/24 2>/dev/null | sort -V > alive_hosts.txt
fping -u -g 192.168.1.0/24 2>/dev/null | sort -V > dead_hosts.txt

# 或使用 parallel + ping(控制並發數 50)
seq 1 254 | parallel -j 50 "ping -c 2 -W 1 192.168.1.{} &>/dev/null && echo 192.168.1.{} UP || echo 192.168.1.{} DOWN"

企業級巡檢系統建議

能力工具/方案說明
資產發現Nmap / Masscan / NetBox自動發現設備、端口、服務、系統指紋,建立 CMDB
持續監控Zabbix / Prometheus + Blackbox ExporterICMP/TCP/HTTP 多協議探針,圖表告警、歷史趨勢
異常自愈Ansible + Alertmanager Webhook檢測到 DOWN 觸發 Playbook 嘗試重啟服務/發送工單
審計合規日誌集中存儲(ELK/Loki)+ 定期報表滿足等保/ISO27001 定期巡檢留證要求

總結

簡單的 for 循環 + ping 適合臨時排查、小網段巡檢。規模超過 50 台或需持續監控時,**必須引入專業監控系統**(Zabbix/Prometheus),實現「發現-告警-處理-閉環」全流程自動化,避免人工腳本維護成本隨規模線性增長。

Copyright © Windows教程網 All Rights Reserved