shell脚本快速检查192.168.1网段ip是否在用的方法

2025-01-15 04:50

本文主要是介绍shell脚本快速检查192.168.1网段ip是否在用的方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《shell脚本快速检查192.168.1网段ip是否在用的方法》该Shell脚本通过并发ping命令检查192.168.1网段中哪些IP地址正在使用,脚本定义了网络段、超时时间和并行扫描数量,并使用...

检查 192.168.1 网段中哪些 IP 地址正在使用,可以使用 Shell 脚本结合 ping 命令来并发扫描整个网段。以下是实现这一功能的完整脚本:

脚本:检查 192.168.1 网段 IP 是否在用

#!/bin/bash
# 定义网段
NETWORK="192.168.1"
# 定义超时时间(秒)
TIMEOUT=1
# 定义并行扫描的 IP 数量
PARALLEL=20
# 日志函数
function log_info() {
  echo -e "[INFO] $1"
}
function log_success() {
  echo -e "\033[32m[SUCCESS] $1\033[0m"
}
function log_error() {
  echo -e "\033[31m[ERROR] $1\033[0m"
}
# 检查单个 IP 是否在线
function check_ip() {
  local ip=$1
  if ping -c 1 -W "$TIMEOUT" "$ip" &> /dev/null; then
    log_success "IP $ip is online"
  else
    log_error "IP $ip is offline"
  fi
}
# 主函数
function main() {
  log_info "Scanning network $NETWORK.0/24..."
  # 使用循环遍历 1-254 的 IP 地址
  for i in {1..254}; do
    ip="$NETWORK.$i"
    check_ip "$ip" &
    # 控制并行数量
    if [[ $(jobs -r -p | wc -l) -ge $PARALLEL ]]; then
      wait -n
    fi
  done
  # 等待所有后台任务完成
  wait
}
# 执行主函数
main

脚本说明

  • 网段定义

    • NETWORK="192.168.1":定义要扫描的网段。
  • 超时时间

    • TIMEOUT=1:设置 ping 命令的超时时间为 1 秒。
  • 并行扫描

    • PARALLEL=20:设置同时扫描的 IP 数量为 20 个,以提高扫描效率。
  • 日志输出

    • 使用不同颜色的日志区分在线和离线的 IP 地址:
      • 绿www.chinasem.cn色:IP 在线。
      • 红色:IP 离线。
  • check_ip 函数

    • 使用 ping 命令检查单个 IP 是否在线。
    • 如果 ping 成功,则 IP 在线;否则,IP 离线。
  • 主函数 main

    • 遍历 192.168.1.1 到 192.168.1.254 的所有 IP 地址。
    • 使用 & China编程;将 check_ip 放入后台执行,实现并行扫描。
    • 使用 jobs 和 wait 控制并行任务数量。

使用方法

  • 将脚本保存为 scan_network.sh

赋予执行权限:

chmod +x scan_network.sh

运行脚本:

./scan_network.sh

示例输出

[INFO] Scanning network 192.168.1.0/24...
[SUCCESS] IP 192.168.1.1 is online
[ERROR] IP 192.168.1.2 is offline
[SUCCESS] IP 192.168.1.3 is online
[ERROR] IP 192.168.1.4 is offline
...

优化建议

增加 IP 范围参数可以通过命令行参数指定扫描的 IP 范围,例如:

./scan_network.sh 192.168.1.10 192.168.1.20

修改脚本:

START_IP=${1:-1}
END_IP=${2:-254}
for i in $(seq "$START_IP" "$END_IP"); do
  ip="$NETWORK.$i"
 python check_ip "$ip" &
done

保存结果到文件可以将扫描结果保存到文件中,便于后续分析:

LOG_FILE="scan_results.txt"
function log_success() {
  echo -e "\033[32m[SUCCESS] $1\033[0m"
  echo "[SUCCESS] $1" >> "$LOG_FILE"
}
function log_error() {
  echo -e "\033[3www.chinasem.cn1m[ERROR] $1\033[0m"
  echo "[ERROR] $1" >> "$LOG_FILE"
}

使用 fping 替代 pingfping 是一个更高效的网络扫描工具,支持批量扫描。如果系统安装了 fping,可以替换 ping 命令:

fping -c 1 -t "$TIMEOUT" "$ip" &> /dev/null

总结

该脚本通过并行 ping 扫描 192.168.1 网段,快速检测哪些 IP 地址在线。通过调整并行数量和超时时间,可以平衡扫描速度和准确性。如果需要更高效的扫描,可以考虑使用 nmap 或&nJQJZLIpOobsp;fping 等专业工具。

到此这篇关于shell脚本快速检查192.168.1网段ip是否在用的文章就介绍到这了,更多相关shell检查192.168.1网段ip是否在用内容请搜索编程China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!

这篇关于shell脚本快速检查192.168.1网段ip是否在用的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1153061

相关文章

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

四种简单方法 轻松进入电脑主板 BIOS 或 UEFI 固件设置

《四种简单方法轻松进入电脑主板BIOS或UEFI固件设置》设置BIOS/UEFI是计算机维护和管理中的一项重要任务,它允许用户配置计算机的启动选项、硬件设置和其他关键参数,该怎么进入呢?下面... 随着计算机技术的发展,大多数主流 PC 和笔记本已经从传统 BIOS 转向了 UEFI 固件。很多时候,我们也

Java读取InfluxDB数据库的方法详解

《Java读取InfluxDB数据库的方法详解》本文介绍基于Java语言,读取InfluxDB数据库的方法,包括读取InfluxDB的所有数据库,以及指定数据库中的measurement、field、... 首先,创建一个Java项目,用于撰写代码。接下来,配置所需要的依赖;这里我们就选择可用于与Infl

springboot 加载本地jar到maven的实现方法

《springboot加载本地jar到maven的实现方法》如何在SpringBoot项目中加载本地jar到Maven本地仓库,使用Maven的install-file目标来实现,本文结合实例代码给... 在Spring Boothttp://www.chinasem.cn项目中,如果你想要加载一个本地的ja

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

Apache Tomcat服务器版本号隐藏的几种方法

《ApacheTomcat服务器版本号隐藏的几种方法》本文主要介绍了ApacheTomcat服务器版本号隐藏的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1. 隐藏HTTP响应头中的Server信息编辑 server.XML 文件2. 修China编程改错误

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者