批量Ping执行Bash脚本
#!/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脚本的更多相关文章
- Linux开机执行bash脚本
问题描述: Linux开机执行bash脚本 问题解决: (1)在 /etc/init.d文件夹中新建一个脚本myinit (2) ...
- 批量ping测试的脚本
#脚本开始 #!/bin/bash HOSTLIST=`cat /usr/local/ipaddrs.txt` for IP in $HOSTLIST do ping -c 3 -i 0.2 -W 3 ...
- bigdata_批量机器执行通用脚本
经常有这样的场景,需要批量验证一些配置或者机器,执行一些命令.例如 echo $PATH 等等 这里分享一个批量执行脚本 脚本名称 deployCommnd.sh 运行demo : sh depl ...
- Linux crontab执行bash脚本
需要设置环境,bash文件的开头可以这么写 #!/bin/bash . /etc/profile . ~/.bash_profile
- 一键批量ping任意ip段的存活主机
=======================by me===================================== @echo offecho.color FC for /f %%i ...
- Bash脚本编程之脚本基础和bash配置文件
脚本基础 参考资料:Shell Scripts (Bash Reference Manual) 不严谨地说,编程语言根据代码运行的方式,可以分为两种方式: 编译运行:需要先将人类可识别的代码文件编译成 ...
- Bash 脚本 set 命令教程
http://www.ruanyifeng.com/blog/2017/11/bash-set.html set命令是 Bash 脚本的重要环节,却常常被忽视,导致脚本的安全性和可维护性出问题.本文介 ...
- Linux批量ping脚本
根据鸟哥的ping脚本,我重新修改了一下.用到的知识有:read.Linux按行读取.shell输出效果调整等 其中Linux按行读取文件比较重要,可参看文下链接 1 脚本功能: 批量ping当前路径 ...
- 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 ...
随机推荐
- 27-python基础-python3-异常处理(try except)
到目前为止,在 Python 程序中遇到错误,或“异常”,意味着整个程序崩溃.不希望这发生在真实世界的程序中. 相反,希望程序能检测错误,处理它们,然后继续运行. 实例1: 当试图用一个数除以零时 ...
- void v.s. void *
在學校老師一定都會教void是無型態的返回值例如 void swap(int *a, int *b){ int temp = *a; *a = *b; *b = temp ...
- CF1158C
题意:有排列p, 令\(nxt_i\)为\(p_i\)右侧第一个大于\(p_i\)的数的位置,若不存在则\(nxt_i=n+1\) 现在整个p和nxt的一部分丢失了,请根据剩余的nxt,构造出一个符合 ...
- mybatis 教程(mybatis in action)
目录简介: 一:开发环境搭建二:以接口的方式编程 三:实现数据的增删改查 四:实现关联数据的查询 五:与spring3集成(附源码) 六:与Spring MVC 的集成 七:实现mybatis分页(源 ...
- aiohttp上报405: Method Not Allowed
请求方式不对,修改为“POST”或者“GET” 可参考:https://blog.csdn.net/yiifaa/article/details/80928487
- Asp.net Controller中View 和Action方法认证Authorize 及对AuthorizeAttribute扩展
Asp.net Controller中View和Action方法认证Authorize 在建立Web 站点安全性时 1.登录后才可访问系统文件 ——限制 Forms认证 <authenticat ...
- CSS3 新特性(box-sizing盒模型,背景线性渐变,filter滤镜,calc函数,transition过渡)
1.盒子模型(box-sizing) CSS3 中可以通过 box-sizing 来指定盒模型,有两个值:即可指定为 content-box.border-box,这样我们计算盒子大小的方式就发生了改 ...
- 惠普笔记本Ubuntu系统HDMI无输出
- JNI intArray
JNIDemo.java public class JNIDemo { static { /* 1. load */ System.loadLibrary("native"); / ...
- Linux的一些命令总结
启动终端: ctr+alt+t 终端字体放大: ctr+shift+'+',终端字体缩小: ctr+'-' ls: 查看当前目录下的文件信息 pwd: 查看目录所在的路径 touch: 创建文件 mk ...