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

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

1 脚本功能:

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

1只需要输入存放ip地址的文件名,

2 然后选择执行速度。

3 ping的结果就会放在当前路径下的PingResult.csv文件里

2 注意:

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

#!/bin/bash
# Program
# Use ping command to check the network's PC state.
# History
# // 学鸟哥
#环境变量
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
FILEPATH=`pwd`
FILENAME=MLGB
METHOD=

#使用ping确认网络是否通
function FUN_PING {
 - ${IPADDRESS} &> /dev/ ||result=
# 开始显示结果是正确的显示 (UP),没有连通 (DOWN)
 ]; 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是一行一行的
  有两种运行方法:  ./脚本名
  执行完成后,ping的结果存放在当前路径下的PingResult.csv文件中。
  "
  exit
esac
#输入参数和基本验证
#清理屏幕
echo -e "\033[2J \033[31;1m "
#调整显示样式
#echo -e "\033[31;1m"
echo "请确保IPADDRESS的文件和脚本在同一路径"
read -t  -p "请输入IPADDRESS的文件名: " FILENAME
read -t  -p "请选择执行速度,1 快;2 慢:,默认为1: " METHOD
#恢复默认显示样式
echo -e "\033[0m"

#主函数
case "$METHOD" in
    )
    time for_in_file
    ;;
    )
    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脚本的更多相关文章

  1. Linux批量解压缩脚本

    #!/bin/bash # 批量解压缩脚本 # 作者: shaohsiung # 时间: // # Store all file names in the tmp directory with the ...

  2. python 批量ping脚本不能用os.system

    os.system(cmd)通过执行命令会得到返回值. ping通的情况下返回值为0. ping不通的情况: 1.请求超时,返回值1 2.无法访问目标主机,返回值为 0,和ping通返回值相同   所 ...

  3. 批量ping 检测linux主机是否可以通

    批量ping 检测linux主机是否可以通 # 1.配置列表 [root@db137 liweiwie]# cat /home/dbatlbb/script/liweiwie/ping_ip.txt ...

  4. Shell学习笔记之shell脚本和python脚本实现批量ping IP测试

    0x00 将IP列表放到txt文件内 先建一个存放ip列表的txt文件: [root@yysslopenvpn01 ~]# cat hostip.txt 192.168.130.1 192.168.1 ...

  5. 批量IP自动ping脚本

    批量IP自动ping脚本ping.sh 在同一目录新建一个名为pingip的文件,并以每行一个IP的方式罗列.使用sh命令执行ping.sh #!/bin/bash IP_LIST=`cat ping ...

  6. shell脚本和python脚本实现批量ping IP测试

    先建一个存放ip列表的txt文件: [root@yysslopenvpn01 ~]# cat hostip.txt 192.168.130.1 192.168.130.2 192.168.130.3 ...

  7. shell 编写脚本批量Ping IP

    服务器总是一下子买了很多的段的ip.通过绑定后,也不知道这些ip是否绑定成功,所以就写了一个shell脚本,把ip输好,批量ping一下,看是不是都能ping通. 脚本如下: 此外.还有一个ip文件, ...

  8. 批量Ping执行Bash脚本

    #!/bin/bash # Ping Batch Script # 连接超时时间 TMOUT= # 最大线程数 MAX_THREAD= # 保留内存大小 MIN_MEM= # 默认ip配置,可通过 - ...

  9. [教程]K8Cscan调用外部程序(Win/Linux批量上控/执行多条命令/保存结果)

    0x000 调用原理 Cscan调用外部程序有两种方式,一是编写DLL,二是配置文件 编写DLL文件对于不懂编程的人来说可能会很难(虽然支持各语言) 由于考虑到很多人不会编程或会编程又急用无法短时间转 ...

随机推荐

  1. 【倍增】洛谷P3379 倍增求LCA

    题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先. 输入输出格式 输入格式: 第一行包含三个正整数N.M.S,分别表示树的结点个数.询问的个数和树根结点的序号. 接下来N-1行每 ...

  2. windbg蓝屏调试

    一般在写Windows内核程序的时候,经常会出现蓝屏的问题,这个时候一般是采用记录下dump文件然后用windbg查看得方式,具体的过程就不说了,网上一大堆的内容.现在我主要记录自己当初按照网上的方案 ...

  3. 虚拟机迁移(QEMU动态迁移,Libvirt动(静)态迁移)

    动静态迁移的原理 静态迁移是指在虚拟机关闭或暂停的情况下,将源宿主机上虚拟机的磁盘文件和配置文件拷贝到目标宿主机上.这种方式需要显式的停止虚拟机运行,对服务可用性要求高的需求不合适. *** 动态迁移 ...

  4. iOS中 学会如何对sqlite3 进行封装 (纯手工)

    #waring ---(看官注意) ---使用说明: ①在创建自定义model类之前让该类继承自文件中的Model类, ②为model类选一个NSString属性作为主键:(既,在初始化方法里面将从父 ...

  5. SAP HANA中的SLT简介

    在以SAP系统作为主要ERP的企业中,不同系统之间的数据库数据同步是个重要的工作.对于这种需求,除了开发ABAP接口之外,也有高效的工具可用.SLT就是其中之一. SLT是SAP的第一个ETL(Ext ...

  6. 三目运算:and/or 技巧

    三目运算:and/or 技巧 and, or 联合起来有个小技巧: print 2 < 3 and True or False 说明:     如果  2 小于 3 了,则输出 True ,  ...

  7. .net的retrofit--WebApiClient库

    # 库简介 WebApiClient是开源在github上的一个httpClient客户端库,内部基于HttpClient开发,是一个只需要定义c#接口(interface),并打上相关特性,即可异步 ...

  8. Shell脚本之反引号【``】和 $()

    一.奇怪的返回 今天在搞监控的时候,修改一个老脚本,主要是通过对操作系统进行判断来获取不同的监控参数.(获取top参数在不同操作系统上也有个坑,会在另外一篇里面写) 脚本如下,非常简单: #处理Cen ...

  9. [PHP] PHP源码常用代码中的宏定义

    PHP源码常用代码宏定义:#define 宏名 字符串#表示这是一条预处理命令,所有的预处理命令都以#开头.define是预处理命令.宏名是标识符的一种,命名规则和标识符相同.字符串可以是常数.表达式 ...

  10. linux几条常用的命令

    列出一些手头分分钟要用到的命令. 1.df -h 用来查看各个分区的大小 2.du -h --max-depth=0 /data2/xijun.gong/tt_data 用来查看文件夹的大小,并指定递 ...