#!/bin/bash
# Ping Batch Script # 连接超时时间
TMOUT=
# 最大线程数
MAX_THREAD=
# 保留内存大小
MIN_MEM= # 默认ip配置,可通过 -r ip-ip指定,格式: ping_batch.sh -r 192.168.1.1-192.168.2.254
# ip前缀
ip_preffix="192.168"
# 16位主机范围 192.168.-192.168.
ip_network_range="1-2"
# ping范围 192.168.1.1-192.168.2.254
ip_host_range="1-254" # ping脚本
PING_SCRIPT='ping -c 1 ${ip_preffix}.${ip_network}.${ip_host} &> /dev/null;[[ $? -eq 0 ]] && echo -e "\033[32m${ip_preffix}.${ip_network}.${ip_host} yes\033[0m" || echo -e "\033[32m${ip_preffix}.${ip_network}.${ip_host} no\033[0m" &>/dev/null' # Ip格式错误提示
function ip_format_error()
{
echo -e "\033[31mIp format is incorrect.\nIp format: ping_batch.sh -r ip-ip.\nsimple: ping_batch.sh -r 192.168.1.1-192.168.2.1\033[0m"
exit
} # 传入参数Ip格式判断及格式化
case "$1" in
'-r')
shift
ip_start=`echo $|awk -F'-' '{print $1}'`
ip_end=`echo $|awk -F'-' '{print $2}'`
echo $ip_start|grep -E "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" &>/dev/null
[[ $? -eq ]] || ip_format_error
echo $ip_end|grep -E "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" &>/dev/null
[[ $? -eq ]] || ip_format_error
ip_start_preffix=`echo $ip_start|awk -F'.' '{print $1"."$2}'`
ip_end_preffix=`echo $ip_end|awk -F'.' '{print $1"."$2}'`
if [[ "$ip_start_preffix" == "$ip_end_preffix" ]]
then
ip_preffix=$ip_start_preffix
else
echo -e "\033[31m Ip 192.168.1.1-192.168.2.1\n192.168==192.168\nSubnet is 16 bits.\033[0m"
exit
fi
ip_network_range_start=`echo $ip_start|awk -F'.' '{print $3}'`
ip_network_range_end=`echo $ip_end|awk -F'.' '{print $3}'`
ip_host_range_start=`echo $ip_start|awk -F'.' '{print $4}'`
ip_host_range_end=`echo $ip_end|awk -F'.' '{print $4}'`
ip_network_range="${ip_network_range_start}-${ip_network_range_end}"
ip_host_range="${ip_host_range_start}-${ip_host_range_end}"
;;
*)
echo -e "\033[31m执行默认配置\033[0m"
;;
esac # 模拟线程,超过配置值,等待
function thread_wait()
{
if [[ $(ps -ef|wc -l) -gt $MAX_THREAD ]]
then
sleep
thread_wait
fi
} # 内存保留检查,小于设定值则等待
function free_check()
{
if [[ $(free -m|grep 'Mem:'|awk '{print $4}') -lt MIN_MEM ]]
then
sleep ;
free_check
fi
} # 格式化Ip并执行ping脚本
for ip_network in `seq $(echo $ip_network_range|awk -F '-' '{print $1}') $(echo $ip_network_range|awk -F '-' '{print $2}')`
do
thread_wait
for ip_host in `seq $(echo $ip_host_range|awk -F '-' '{print $1}') $(echo $ip_host_range|awk -F '-' '{print $2}')`
do
free_check
(eval "${PING_SCRIPT}") &
done
done
#!/bin/bash
# Ping Batach
ip_prefix="192.168"
ip_network_range="1-2"
ip_network_host_range="1-254" function ping_batch()
{
ip="$1"
script_ping='ping -c 2 '$ip'&>/dev/null;[[ $? -eq 0 ]] && echo -e "\033[32m'$ip' yes\033[0m" || echo -e "\033[36m'$ip' no\033[0m">/dev/null'
eval $script_ping &
}
for i in `seq $(echo $ip_network_range|awk -F '-' '{print $1}') $(echo $ip_network_range|awk -F '-' '{print $2}')`;do for j in `seq $(echo $ip_network_host_range|awk -F '-' '{print $1}') $(echo $ip_network_host_range|awk -F '-' '{print $2}')`;do ping_batch "${ip_prefix}.${i}.${j}";done;done

批量Ping执行Bash脚本的更多相关文章

  1. Linux开机执行bash脚本

    问题描述:     Linux开机执行bash脚本     问题解决:         (1)在 /etc/init.d文件夹中新建一个脚本myinit                     (2) ...

  2. 批量ping测试的脚本

    #脚本开始 #!/bin/bash HOSTLIST=`cat /usr/local/ipaddrs.txt` for IP in $HOSTLIST do ping -c 3 -i 0.2 -W 3 ...

  3. bigdata_批量机器执行通用脚本

    经常有这样的场景,需要批量验证一些配置或者机器,执行一些命令.例如  echo $PATH  等等 这里分享一个批量执行脚本 脚本名称 deployCommnd.sh 运行demo : sh depl ...

  4. Linux crontab执行bash脚本

    需要设置环境,bash文件的开头可以这么写 #!/bin/bash . /etc/profile . ~/.bash_profile

  5. 一键批量ping任意ip段的存活主机

    =======================by me===================================== @echo offecho.color FC for /f %%i ...

  6. Bash脚本编程之脚本基础和bash配置文件

    脚本基础 参考资料:Shell Scripts (Bash Reference Manual) 不严谨地说,编程语言根据代码运行的方式,可以分为两种方式: 编译运行:需要先将人类可识别的代码文件编译成 ...

  7. Bash 脚本 set 命令教程

    http://www.ruanyifeng.com/blog/2017/11/bash-set.html set命令是 Bash 脚本的重要环节,却常常被忽视,导致脚本的安全性和可维护性出问题.本文介 ...

  8. Linux批量ping脚本

    根据鸟哥的ping脚本,我重新修改了一下.用到的知识有:read.Linux按行读取.shell输出效果调整等 其中Linux按行读取文件比较重要,可参看文下链接 1 脚本功能: 批量ping当前路径 ...

  9. Bash脚本实现批量作业并行化

    http://jerkwin.github.io/2013/12/14/Bash%E8%84%9A%E6%9C%AC%E5%AE%9E%E7%8E%B0%E6%89%B9%E9%87%8F%E4%BD ...

随机推荐

  1. 关于shell脚本中的别名问题

    在shell脚本中,shell中的alias别名是不会起作用的,在脚本中的命令都是按着环境变量PATH直接找到命令文件而执行的,所以就不用担心脚本里的命令会与shell中的个性别名冲突啦~

  2. $@、$*和环境变量IFS

  3. 在虚拟机中使用maven编译signal server项目记录

    前言 安装好 mvn Ubuntu 16.04 JDK 我是从 oracle jdk 11 lts download 网站,复制jdk-11.0.4_linux-x64_bin.tar.gz的链接 w ...

  4. java des 加密/解密

    JAVA实现 加密 注意:DES加密和解密过程中,密钥长度都必须是8的倍数 public byte[] desCrypto(byte[] datasource, String password) { ...

  5. 【leetcode】970. Powerful Integers

    题目如下: Given two non-negative integers x and y, an integer is powerful if it is equal to x^i + y^j fo ...

  6. Jenkins应用

    转自 https://www.cnblogs.com/syw20170419/category/1239520.html Jenkins+Git+Python 进行持续集成接口测试 https://w ...

  7. shell重定向的顺序问题

    三个默认的文件描述符 0: stdin(标准输入) 1: stdout(标准输出) 2: stderr(标准错误输出) 系统中这3个文件描述符所对应的文件: 重定向顺序 示例脚本 echo " ...

  8. SPSS聚类分析:K均值聚类分析

    SPSS聚类分析:K均值聚类分析 一.概念:(分析-分类-K均值聚类) 1.此过程使用可以处理大量个案的算法,根据选定的特征尝试对相对均一的个案组进行标识.不过,该算法要求您指定聚类的个数.如果知道, ...

  9. 12、testng.xml指定运行测试包、测试类、测试方法

    目录如下: TestFixture.java 代码如下: package com.testng.cn; import org.testng.annotations.*; public class Te ...

  10. python TypeError: ‘encoding’ is an invalid keyword argument for this function

    shell调用python脚本出现了这个问题,查询原因得知,python脚本是python3.6写的,我们服务器上默认的python是python2.7.3,所以会出现编码问题. 解决思路: 1.安装 ...