開發與維運

Linux Shell腳本實現批量PING測試

1、執行過程

目的IP地址列表
image.png
批量PING腳本
image.png
設置腳本文件運行權限
chmod +x check_iplist_forHeartbeatDst.sh
image.png
執行腳本(回顯執行進度)
./check_iplist_forHeartbeatDst.sh
image.png
執行結果
cat ipcheckdown.txt
image.png

2、腳本內容

#!/bin/bash
#
#讀取IP列表行數
lineNumber=`cat iplist.txt |wc -l`
#設置計數參數
count=0
#循環讀取IP並測試
for i in `cat ./iplist.txt`
    do
        #計數器
        count=$((count+1))
        echo "${i} ${count}/${lineNumber}"
        #PING並保留丟包數
        p=`ping -c 1 $i|grep loss|awk '{print $6}'|awk -F "%" '{print $1}'`
            #丟包=0則PING成功,否則失敗
            if [ $p -eq 0 ]
                then
                    echo "${i} true" >> ./ipcheckdown.txt
                else
                    echo "${i} fail" >> ./ipcheckdown.txt
            fi
    done

注:通過Windows系統編輯的文件在Linux中執行時,若由於文件格式問題導致報錯,例如:

(1)腳本字符格式異常:

【/bin/bash^M: 壞的解釋器: 沒有那個文件或目錄】
image.png

(2)IP列表格式問題導致腳本讀取IP異常:

image.png

(3)問題原因:

在Windows下每一行結尾是nr,而Linux下則是n,所以才會有多出來的r。
修改方式:
使用指令 sed -i 's/\r$//' 文件名,將上面的指令會把文件中的r 替換成空白。

Leave a Reply

Your email address will not be published. Required fields are marked *