高并发ping多台主机IP

简介

社区或者是大型公司往往有成千上万或者几百台设备,保持设备始终在线对网络运维人员来说至关重要,然而一个一个登录检查,或者一个一个ping并不明智,累人且效率极低,并出错率高。花钱买检测服务当我没说。

shell编程无处不在。

代码

ip.sh

#!/bin/bash
for i in {2..254}
do
for p in {2..254}
do
        {
        ip=192.168.$i.$p
        ping -c1 -W1 $ip &>/dev/null
        if [ $? -ne 0 ];then
                echo "$ip" | tee -a ip.txt
        else
                echo "$ip" >> successIP.txt
        fi
} &
done
done
wait
echo "command execution completed"

效果

bash ./ip.sh

终端显示ping失败的IP地址

内容太长,使用more ip.txt可显示一部分

ip.txt内容

ping成功的ip地址会输出到“successIP.txt”文本中

模拟的IP,就不展示了

说明

 代码共18行336字节,使用双for循环,替换C类内网IP192.168.*.*,-c1参数选项只ping一次,-W1参数选项只等待1s,ping的结果不显示,丢弃到字符设备文件null中,失败的IP地址使用| tee命令双向重定向到终端和ip.txt文本中,ping成功的ip地址使用追加重定向命令>>追加到successIP.txt文件中。

优化:代码设计使用双for循环,控制192.168后两个网段的可变数字,用变量i和p替代,使用集合将可变数字添加;使用一条if语句逻辑判断失败和成功结果,并将结果保存在txt格式文档中;使用"{} &"将if语句囊括在内,让程序在后台并发;使用wait命令等待程序所有ping都结束,打印最终的结果;

tips

大家可以试试动手运行下,中途停止运行可以在当前终端使用Ctrl键+Z强制终止程序运行,或者Ctrl+C强制终止程序运行;可能命令无法生效,可以再开一个终端输入如下命令强制终止:

  1. 当执行./ip.sh,再开一个终端,使用如下命令可查询并发进程ID

    pgrep -af "ip.sh"
    
  2. 使用 kill 命令终止所有这些进程:

    pkill -9 -f "ip.sh"
    

#这样可以一次性终止所有与特定脚本相关的进程,双引号“”的内容替换为自己的脚本名字(注意脚本文件所在路径是当前路径,如果不在当前路径,使用绝对路径

例:pkill -9 -f "/home/xiumo/Desktop/ip.sh"

 简单的事情简单化,复杂的事情也简单化,让运行更高效

相关推荐

  1. 并发服务器-进程

    2024-06-10 02:56:02       44 阅读
  2. 并发服务器 02】——线程池与IO路复用

    2024-06-10 02:56:02       18 阅读
  3. ssh 修改端口号 一个ip ssh主机

    2024-06-10 02:56:02       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-10 02:56:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-10 02:56:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-10 02:56:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-10 02:56:02       18 阅读

热门阅读

  1. Vue如何引入ElementUI并使用

    2024-06-10 02:56:02       8 阅读
  2. 深入解析:MySQL连接超时问题排查与优化策略

    2024-06-10 02:56:02       10 阅读
  3. QuanTA: 一种新的高秩高效微调范式

    2024-06-10 02:56:02       10 阅读
  4. 【环境搭建】5.阿里云ECS服务器 安装Nginx

    2024-06-10 02:56:02       8 阅读
  5. 68、石子合并

    2024-06-10 02:56:02       7 阅读
  6. 2024.6.9刷题记录

    2024-06-10 02:56:02       10 阅读
  7. 阻止div的点击事件冒泡

    2024-06-10 02:56:02       9 阅读