码迷,mamicode.com
首页 > 系统相关 > 详细

Linux批量ping脚本

时间:2016-04-16 18:25:08      阅读:495      评论:0      收藏:0      [点我收藏+]

标签:

根据鸟哥的ping脚本,我重新修改了一下。用到的知识有:read、Linux按行读取、shell输出效果调整等

其中Linux按行读取文件比较重要,可参看文下链接

1 脚本功能:

批量ping当前路径下文件里面的ip地址,ip地址必须一行行填写

2 注意:

请根据提示运行脚本,确保脚本有执行权限,不能在window上运行 

技术分享
#!/bin/bash
# Program
# Use ping command to check the networks PC state.
# History
# 2016/04/16 学鸟哥
#环境变量
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
FILEPATH=`pwd`
FILENAME=MLGB
METHOD=1

#使用ping确认网络是否通
function FUN_PING {
ping -c 1 -w 1 ${IPADDRESS} &> /dev/null && result=0 ||result=1
# 开始显示结果是正确的显示 (UP),没有连通 (DOWN)
if [ "$result" == 0 ]; then
echo "${IPADDRESS}, is UP." |tee -a ${FILEPATH}/PingResult.csv
else
echo "${IPADDRESS}, is DOWN."|tee -a ${FILEPATH}/PingResult.csv
fi
}

#循环读取文件2慢速法
function while_read_LINE_bottm(){
if [ -f ${FILEPATH}/${FILENAME} ];then
    >${FILEPATH}/PingResult.csv
    while read IPADDRESS
    do
    FUN_PING
    done < ${FILEPATH}/${FILENAME}
    echo -e "\033[31;1m 执行完成,结果在${FILEPATH}/PingResult.csv里 \033[0m"
else
    echo -e "\033[41;37;5m 找不到文件${FILEPATH}/${FILENAME} \033[0m"
fi
}

#循环读取文件1快速法
function for_in_file(){

if [ -f ${FILEPATH}/${FILENAME} ];then
    >${FILEPATH}/PingResult.csv
    for IPADDRESS in `cat ${FILEPATH}/${FILENAME}`
    do
    FUN_PING
    done
    echo -e "\033[31;1m 执行完成,结果在${FILEPATH}/PingResult.csv里 \033[0m"
else
    echo -e "\033[41;37;5m 找不到文件${FILEPATH}/${FILENAME} \033[0m"
fi
}

case "$1" in
  help|--help|?)
  echo "Usage: 这个脚本用来ping文件中的ip的,请确保文件存在,且ip是一行一行的
  有两种运行方法:1 sh 脚本名;2 ./脚本名
  执行完成后,ping的结果存放在当前路径下的PingResult.csv文件中。
  "
  exit 1
esac
#输入参数和基本验证
#清理屏幕
echo -e "\033[2J \033[31;1m " 
#调整显示样式
#echo -e "\033[31;1m"
echo "请确保IPADDRESS的文件和脚本在同一路径"
read -t 20 -p "请输入IPADDRESS的文件名: " FILENAME
read -t 10 -p "请选择执行速度,1 快;2 慢:,默认为1: " METHOD
#恢复默认显示样式
echo -e "\033[0m"

#主函数
case "$METHOD" in
    1)
    time for_in_file
    ;;
    2)
    time while_read_LINE_bottm
    ;;
    *)
    echo -e "\033[41;37;5m 你丫的填错数字了,老子按照最慢的给你执行 \033[0m"
    time while_read_LINE_bottm
esac
点击查看代码

 

另外自己记录:Linux函数使用return命令时,return code的值不能超过255,一旦超过,则继续从〇开始计算

参考:

Linux按行读取文件

改变linux shell的输出效果[字体颜色,样式等]

linux read 用法

Linux批量ping脚本

标签:

原文地址:http://www.cnblogs.com/lizhaoxian/p/5398757.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!