Linux批量ping脚本

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

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

1 脚本功能:

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

2 注意:

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

#!/bin/bash
# Program
# Use ping command to check the network‘s 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 用法

时间: 2024-10-10 18:12:06

Linux批量ping脚本的相关文章

linux上ping脚本及zabbix3.xx上自动发现

有时候,我们需要在linux上ping一些地址,判断地址是否被占用 一.编写shell脚本 脚本如下: #!/bin/bash for i in 192.168.16.{1..255}       do     (         ping $i -c 2 > /dev/null 2>&1         [ $? -eq 0 ] && echo "$i is alive"      )& done 效果如下 二.使用fping fping需

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

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

linux 批量scp 脚本

scp.sh #!/bin/ship_list=/home/tools/scp/iplistsrc_file=/home/probecheck.shdest_file=/home/username=rootpassword=123456cat $ip_list | while read linedo   host_ip=`echo $line | awk '{print $1}'`   echo "$host_ip"   ./scp.exp $host_ip $username $pa

Linux系统批量配置脚本

系统批量配置脚本使用手册 使用要求 linux操作系统(RHEL,kylin,凝思磐石均可用) 本地计算机expect命令可用 ssh.scp命令可用 脚本组成及功能说明 引导脚本 - config.sh 该脚本会引导整个脚本组合的执行,提示用户输入远程计算机IP地址(范围)及root密码. 系统配置脚本 - sysinfo-collect.sh 该脚本中可以自行定制需要在远程计算机上执行的命令,配合引导脚本及响应脚本使用,可以完成的任务有: 在远程计算机批量执行命令: 修改远程计算机配置文件:

shell 编写脚本批量ping ip

最近做机房带宽检测.最近编写一个shell脚本批量ping各地机房的ip,返回失败率及平均响应时间 #!/bin/bash log=$1.log echo -n "" > $log for i in `cat $1` do   /bin/ping -s 1000 -f -c 100  $i > ip.txt echo "`curl ip.cn?ip=$i`  `cat ip.txt | grep transmitted  | gawk '{print $6}'` 

使用python编写批量ping主机脚本

通过使用python,编写脚本批量ping主机,验证主机是否处于活动状态 #!/usr/bin/python #auther: Jacky #date: 2016-08-01 #filename: ping_ip.py import os,sys import subprocess,cmd def subping():     f = open("ip_list.txt","r")     lines = f.readlines()     for line in 

用shell脚本批量ping域名

此脚本实现的功能是批量ping域名,将能ping通的和不能ping通的分类,并记录能ping通的域名的相应解析地址 #!/bin/bash #判断第一个参数是否是文件,不是则退出 if [[ -f $1 ]];then do_name=(`cat $1`) else echo "$1文件不存在" exit 1 fi #设置ping的包个数 package_num=2 echo -e "解析地址\t\t域名">>res_ok.txt echo "

批量Ping执行Bash脚本

#!/bin/bash # Ping Batch Script # 连接超时时间 TMOUT=3 # 最大线程数 MAX_THREAD=4000 # 保留内存大小 MIN_MEM=400 # 默认ip配置,可通过 -r ip-ip指定,格式: ping_batch.sh -r 192.168.1.1-192.168.2.254 # ip前缀 ip_preffix="192.168" # 16位主机范围 192.168.1-192.168.2 ip_network_range="

Linux系统shell脚本编程——生产实战案例

Linux系统shell脚本编程--生产实战案例     在日常的生产环境中,可能会遇到需要批量检查内网目前在线的主机IP地址有哪些,还可能需要检查这些在线的主机哪些端口是开放状态,因此依靠手工来检查是可以实现,但比较费时费力,所以需要结合shell脚本来实现批量检查的功能,那么今天就来做个小小的实验. 1.开发脚本前准备 一般大家都知道,测试主机是否在线,常用的命令无非就是ping.nmap,因此,首先找一个地址来测试下ping命令的效果 [[email protected] scripts]