天天看點

批量ping清單中的IP位址

工作中經常遇到需要一下ping上千個IP的情況。于是參照網上其他人的成果,稍加改造,最終有了這個腳本:

#!/bin/bash
for i in `cat $1`
    do
        ping=`ping -c 1 -w 1 $i|grep loss|awk '{print $6}'|awk -F "%" '{print $1}'`
        if (( $ping == 100 ));then
        echo -e ping "\t" $i "\t" "\033[41;37m FAIL \033[0m"
        elif (( $ping == 0  ));then
        echo -e ping "\t" $i "\t" "\033[42;37m OK \033[0m"
        else
        echo -e ping "\t" $i "\t" "\033[44;37m NULL \033[0m"
        fi
    done
           

儲存後 chmod 一下,在後面追加包含IP清單的檔案即可。

上面的腳本是大概一年前寫的,當時因為自己水準有限,是以廢了不少功夫,後來随着知識增長,對解決這個問題有了新的認識,就是使用指令本身的傳回狀态。是以在這裡更新一下:

#!/bin/bash

for i in `cat $1`
    do
        ping -c 1 -w 1 $i &>/dev/null &&\
        echo -e ping "\t" $i "\t" "\033[42;37m OK \033[0m" ||\
        echo -e ping "\t" $i "\t" "\033[41;37m FAILED \033[0m"
    done
           

預設情況下,ping的逾時時間比較長,這裡使用-w參數設定為1秒,FAIL 和 OK的地方加上顔色顯示,友善肉眼觀察~