一、只從文件讀取
[root@rhel8 shell]# cat ping.sh #!/bin/bash
# 判斷是否有輸入參數
if [ $# -eq 0 ];then
# basename:只輸出路勁的最后一個名稱
echo -e "\033[34mUsage: `basename $0` filename.txt\033[0m" fi # 判斷是否輸入的是文件
if [ ! -f $1 ];then echo -e "\033[33mError file(It's not a file)\033[0m" exit fi # 從文件讀取ip地址
for ip in `cat $1` do ping -c2 $ip >/dev/null 2>&1
if [ $? -eq 0 ];then echo -e "\033[33m${ip} is up\033[0m"
else echo -e "\033[33m${ip} is down\033[0m" fi done
二、從命令行或文件讀取
[root@rhel8 shell]# cat ping.sh #!/bin/bash
IP_REG=([0-9]{1,3}\.){3}[0-9]{1,3} # 判斷是否有輸入參數
if [ $# -eq 0 ];then
# basename:只輸出路勁的最后一個名稱
echo -e "\033[34mUsage: `basename $0` filename.txt|ipaddr\033[0m" exit fi # 判斷是$1是否輸入參數,輸入的參數是ip地址還是文件 # 判斷輸入的是IP地址
if [[ $1 =~ $IP_REG ]];then ping -c2 -W1 $1 >/dev/null 2>&1
if [ $? -eq 0 ];then echo -e "\033[33m$1 is up\033[0m"
else echo -e "\033[33m$1 is down\033[0m" fi elif [ -f $1 ];then # 從文件讀取ip地址
for ip in `cat $1` do ping -c2 $ip >/dev/null 2>&1
if [ $? -eq 0 ];then echo -e "\033[33m${ip} is up\033[0m"
else echo -e "\033[33m${ip} is down\033[0m" fi done else
# basename:只輸出路徑的最后一個名稱
echo -e "\033[34mUsage: `basename $0` filename.txt|ipaddr\033[0m" exit fi